本頁說明如何使用 Amazon Simple Storage Service (Amazon S3) 和 AWS Signature 第 4 版,將 Media CDN 連線至與 Amazon S3 相容的私人儲存桶。Media CDN 不支援 AWS 第 4a 版簽署程序。
Media CDN 支援 AWS 第 4 版簽署程序,可驗證來源要求。你可以使用這項功能將 Media CDN 連線至私人的 Amazon S3 相容值區,確保內容只會與 Media CDN 分享。您也可以啟用用戶端驗證,進一步強化縱深防禦。 詳情請參閱「使用已簽署的要求」。
事前準備
確認您擁有下列資源:
符合命名規則的私有 Amazon S3 儲存貯體。
專用的 AWS IAM 使用者帳戶,可存取上述私有 Amazon S3 bucket。確認值區已將
s3:getObject權限授予 AWS IAM 使用者帳戶。如要進一步瞭解如何設定 Amazon S3 儲存空間的存取權,請參閱「Amazon S3 中的身分和存取權管理」。專屬 AWS IAM 使用者帳戶的 AWS 存取金鑰 ID 和 AWS 私密存取金鑰。詳情請參閱「管理 IAM 使用者的存取金鑰」。
如果從未使用過 Secret Manager,請設定 Secret Manager。
為 Media CDN 建立服務代理
如要為 Media CDN 建立服務代理程式,請使用 gcloud beta services identity create 指令。
gcloud
gcloud beta services identity create \
--project PROJECT_ID \
--service=networkservices.googleapis.com
將 PROJECT_ID 替換為專案 ID。
詳情請參閱「觸發服務代理程式建立作業」。
在 Secret Manager 中儲存存取金鑰
請按照下列步驟在 Secret Manager 中建立密鑰。
控制台
前往 Google Cloud 控制台的「Secret Manager」頁面。
在「Secret Manager」(密鑰管理工具) 頁面中,按一下「Create secret」(建立密鑰)。
在「密鑰詳細資料」部分,完成下列步驟:
在「Name」(名稱) 欄位中,輸入密鑰的名稱,例如
aws-access-key-id。在「Secret value」(密鑰值) 部分中,略過「Upload file」(上傳檔案) 欄位。
在「Secret value」(密鑰值) 欄位中,輸入 AWS 私密存取金鑰。
略過其餘部分。
點選「建立密鑰」。
gcloud
請確認您使用的是 Google Cloud CLI 402.0.0 以上版本。 在 Compute Engine 或 Google Kubernetes Engine (GKE) 上,您必須使用 cloud-platform 範圍進行驗證。
gcloud secrets create SECRET_NAME \
--replication-policy="automatic" \
--data-file="PATH_TO_AWS_SECRET_ACCESS_KEY"
更改下列內容:
SECRET_NAME:密鑰名稱,例如aws-access-key-idPATH_TO_AWS_SECRET_ACCESS_KEY:AWS 密鑰存取金鑰值的路徑
如要瞭解如何新增密鑰版本,請參閱「新增密鑰版本」。
授予 Secret Manager 存取權角色
請按照下列步驟,將 Secret Manager 密鑰存取者角色 (roles/secretmanager.secretAccessor) 授予 Media CDN 服務帳戶。
控制台
前往 Google Cloud 控制台的「Secret Manager」頁面。
- 選取密鑰。
- 選取「權限」,然後選取「授予存取權」。系統會隨即顯示「授予存取權」對話方塊。
在「新增主體」部分,在「新主體」欄位中輸入 Media CDN 服務帳戶,如下所示:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com將
PROJECT_NUMBER替換為專案編號。- 在「指派角色」專區的「選取角色」部分,依序選取「Secret Manager」和「Secret Manager Secret Accessor」(Secret Manager 密鑰存取者)。
- 按一下 [儲存]。
gcloud
gcloud secrets add-iam-policy-binding \
projects/PROJECT_NUMBER/secrets/SECRET_NAME \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
更改下列內容:
PROJECT_NUMBER:您的專案編號SECRET_NAME:密鑰名稱
設定 Media CDN,向外部來源 bucket 進行驗證
控制台
前往 Google Cloud 控制台的「Media CDN」頁面。
按一下「來源」分頁標籤。
按一下要設定的來源名稱。
「邊緣快取來源詳細資料」頁面隨即開啟。
按一下 [Edit] (編輯) 按鈕。
在「來源地址」部分,選擇「指定 FQDN 或 IP 位址」,然後輸入 FQDN 或 IP 位址。
在「Private origin authentication」(私人來源驗證) 部分,選取「Authenticate Media CDN's request to this origin with AWS signature version 4」(使用 AWS 第 4 版簽署程序,驗證 Media CDN 傳給這個來源的要求)。
指定下列資訊:
- 金鑰 ID:您的 AWS 存取金鑰 ID,具備來源讀取權限
- 參照密鑰:Secret Manager 中的存取金鑰 ID 和版本。您可以選取現有 ID、手動輸入 ID,或是建立新 ID 並選取。
- 區域:Amazon S3 儲存貯體所在的區域,例如
us-east-1
在「Protocol」(通訊協定) 部分,選取「HTTPS」。
按一下「更新來源」。
gcloud
如要將服務的目前設定匯出至 YAML 檔案,請執行
gcloud edge-cache services export指令:gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml更改下列內容:
SERVICE_NAME:Media CDN 服務的名稱FILENAME:YAML 檔案的名稱
在 Cloud Shell 中,使用文字編輯器編輯 YAML 檔案。
更新 YAML 檔案,加入以下內容:
name: ORIGIN_NAME originAddress: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com" protocol: HTTPS awsV4Authentication: accessKeyId: "AWS_ACCESS_KEY_ID" secretAccessKeyVersion: "projects/PROJECT_NUMBER/secrets/SECRET_NAME/versions/SECRET_VERSION" originRegion: "S3_REGION"更改下列內容:
ORIGIN_NAME:您為這個來源設定的名稱S3_BUCKET_NAME:Amazon S3 bucket 的名稱S3_REGION:Amazon S3 值區所在的區域,例如us-east-1AWS_ACCESS_KEY_ID:您的 AWS 存取金鑰 ID,且具有來源的讀取權限PROJECT_NUMBER:您的專案編號SECRET_NAME:Secret Manager 中的存取金鑰 IDSECRET_VERSION:要使用的密鑰版本
為傳送至來源的要求設定主機和路徑重寫規則。舉例來說,如要對應路徑前置字串為
/vod/的所有要求,請設定與EdgeCacheServiceYAML 檔案中列出的originAddress對應的hostRewrite。以下程式碼範例說明如何使用hostRewrite:name: SERVICE_NAME routeRules: - priority: 1 - description: ROUTE_DESCRIPTION origin: ORIGIN_NAME matchRules: - prefixMatch: "/vod/" routeAction: urlRewrite: hostRewrite: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com" pathPrefixRewrite: "/" cdnPolicy: cacheMode: CACHE_ALL_STATIC defaultTtl: 3600s將
SERVICE_NAME替換為您的EdgeCacheService名稱。詳情請參閱「使用第三方儲存後端」。
儲存 YAML 檔案。
如要更新設定,請匯入 YAML 檔案。
gcloud edge-cache origins import ORIGIN_NAME \ --source=FILENAME.yaml
將 Media CDN 設定為向外部值區驗證後,Media CDN 會為傳送至標頭的所有要求產生 HTTP 授權標頭。簽章計算和傳送至來源的要求都會移除所有查詢參數。
您的來源可能會在回應中附加其他標頭。如要在提供給用戶端前移除回應標頭,請參閱「設定自訂標頭」。如要進一步瞭解如何設定來源,請參閱「來源連線和遮蔽」。