從 Amazon S3 移轉資料時,可以使用 Amazon CloudFront 分配做為輸出路徑。
與直接從 S3 移轉資料相比,透過 CloudFront 移轉資料可能享有較低的 AWS 輸出費用。詳情請參閱 CloudFront 定價和 S3 輸出費用。
使用 CloudFront 做為輸出路徑時,S3 物件不會公開。請參閱「使用 CloudFront 是否會將我的物件公開?」一文。
總覽
如要透過 CloudFront 轉移 S3 資料,請按照下列步驟操作:
設定 IAM 權限
請按照「無代理程式轉移權限」中的操作說明,授予必要的 Google Cloud 權限。
設定 S3 值區的存取權
請按照「設定來源存取權:Amazon S3」一文中的操作說明,設定 Amazon S3 中資料的存取權。
為 S3 bucket 建立 CloudFront 發布項目
- 在 AWS 帳戶中前往 CloudFront。
- 按一下「建立 CloudFront 發布」。
- 在「原始網域」下方,選取 S3 bucket。
- 原始路徑必須留空。
- 接受系統自動填入的「來源名稱」,或自行指定值。
- 在「來源存取權」部分,選取「公開」。這不會將 bucket 設為公開,而是向 CloudFront 指出不應設定任何存取機制。
- 在「快取金鑰和原始要求」部分:
- 在「快取政策」部分,選取「CachingDisabled」CachingDisabled。這樣一來,CloudFront 就不會快取要求,並將要求提供給未經驗證的檢視者。
- 在「Origin request policy」中,選取「AllViewerExceptHostHeader」AllViewerExceptHostHeader。這樣一來,CloudFront 就能將驗證標頭轉送至 S3,Storage 移轉服務就能使用安全憑證存取值區。
- 在「網頁應用程式防火牆 (WAF)」部分,選取「不要啟用」。
- 視需要選擇「價格類別」。Storage Transfer Service 會根據來源 bucket 的區域選取工作站集區,因此 CloudFront 費用會計入該區域。如要取得最低價格,請確認來源 bucket 位於美國或歐洲,或在 CloudFront 中選取「僅使用北美和歐洲」做為價格類別。
按一下「建立 CloudFront 發布」。
建立完成後,系統會顯示 CloudFront 發布詳細資料頁面。
請記下發布網域名稱。例如:
https://dy1h2n3l4ob56.cloudfront.net。如果詳細資料頁面未在發布網域名稱前方加入https://通訊協定,建立轉移作業時,您必須自行新增。
建立移轉工作
Google Cloud 控制台和 REST API 均支援透過 CloudFront 發布轉移。
請勿在轉移作業名稱中加入個人識別資訊 (PII) 或安全性資料等私密資訊。資源名稱可能會傳播至其他 Google Cloud 資源的名稱,並可能向專案外部的 Google 內部系統公開。Google Cloud 控制台
如要使用 Google Cloud 控制台建立移轉作業,請按照這篇文章的操作說明進行。
系統提示輸入 CloudFront 網域時,請輸入您在上一節中記下的發布網域名稱。您也可以在 Amazon Web Services 控制台的 CloudFront 區段中找到這個值。格式為 https://dy1h2n3l4ob56.cloudfront.net。
REST API
如要使用 REST API 建立轉移作業,請參閱「建立轉移作業」頁面的範例。
將發布網域名稱指定為 transferSpec.awsS3DataSource.cloudfrontDomain 欄位的值:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
...
}
常見問題
使用 CloudFront 會將物件公開嗎?
不會。如果您已按照本頁的設定步驟操作,物件就不會公開。
- CloudFront 無法直接存取 S3 物件。
- 如果使用者嘗試直接或透過 CloudFront (如果 bucket 為私有) 存取物件,就會收到
permission denied錯誤。 - Storage 移轉服務會使用您在移轉工作中提供的憑證,為 CloudFront 簽署要求,讓我們安全地下載物件,就像直接從 S3 下載一樣。這是因為標頭轉送設定
AllViewerExceptHostHeader。