本頁面說明如何使用 Amazon Simple Storage Service (Amazon S3) 和 AWS 簽章版本 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 值區。請確認值區已將
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」。
在「Secret details」(機密資料) 部分完成下列操作:
在「Name」欄位中輸入機密金鑰的名稱,例如
aws-access-key-id
。在「Secret value」部分,略過「Upload file」欄位。
在「Secret value」(密鑰值) 欄位中輸入 AWS 私密存取金鑰。
略過其餘區段。
按一下「Create secret」。
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-id
PATH_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
替換為您的專案編號。- 在「Assign roles」專區的「Select a role」部分,依序選取「Secret Manager」和「Secret Manager Secret Accessor」。
- 按一下 [儲存]。
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 以驗證外部來源值區
控制台
前往 Google Cloud 控制台的「Media CDN」頁面。
按一下「Origins」分頁標籤。
按一下要設定的來源名稱。
系統會開啟「Edge Cache origin details」頁面。
按一下 [Edit] (編輯) 按鈕。
在「Origin address」(來源位址) 中,選擇「Specify an FQDN or IP address」(指定 FQDN 或 IP 位址),然後輸入 FQDN 或 IP 位址。
在「私人來源驗證」部分,選取「使用 AWS 第 4 版簽署程序,驗證 Media CDN 傳給這個來源的要求」。
請指定下列資訊:
- Key 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 值區名稱S3_REGION
:Amazon S3 值區所在的區域,例如us-east-1
AWS_ACCESS_KEY_ID
:AWS 存取金鑰 ID,並具有來源的讀取權限PROJECT_NUMBER
:您的專案編號SECRET_NAME
:Secret Manager 中的存取金鑰 IDSECRET_VERSION
:要使用的密鑰版本
針對來源的請求設定主機和路徑重寫。舉例來說,如要對應路徑前置字串為
/vod/
的所有要求,請設定與EdgeCacheService
的 YAML 檔案中所列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 授權標頭。所有查詢參數都會從簽章計算和對來源要求中移除。
來源可能會在回應中附加其他標頭。如要在提供給用戶端之前移除回應標頭,請參閱「設定自訂標頭」一文。如要進一步瞭解如何設定來源,請參閱「來源連線和遮蔽」。