透過 CloudFront 從 S3 轉移

從 Amazon S3 進行的移轉作業可使用 Amazon CloudFront 分配做為輸出路徑。

透過 CloudFront 進行資料傳輸,AWS 出站費用可能會比直接從 S3 傳輸時來得低。詳情請參閱 CloudFront 定價S3 外部傳輸費用

使用 CloudFront 做為出口路徑不會將您的 S3 物件公開給大眾。請參閱「使用 CloudFront 會將我的物件公開嗎?

總覽

如要透過 CloudFront 轉移 S3 資料,請按照下列步驟操作:

設定 IAM 權限

請按照無代理程式轉移權限中的指示,授予必要的 Google Cloud 權限。

設定 S3 值區的存取權

請按照「設定來源存取權:Amazon S3」中的指示,設定 Amazon S3 資料的存取權。

為 S3 儲存桶建立 CloudFront 發布內容

  1. 在 AWS 帳戶中前往 CloudFront
  2. 按一下「建立 CloudFront 發布區」
  3. 在「Origin domain」(來源網域) 下方,選取 S3 值區。
  4. 來源路徑不得留空。
  5. 接受自動填入的「Origin name」,或自行指定值。
  6. 在「來源存取權」專區中,選取「公開」。這不會將您的值區設為公開,而是會向 CloudFront 指出不應設定任何存取機制。
  7. 在「Cache key and origin requests」(快取鍵和來源要求) 部分:
    1. 在「快取政策」部分,選取「CachingDisabled」CachingDisabled。這可避免 CloudFront 快取要求,並將要求提供給未經驗證的觀眾。
    2. 在「Origin request policy」部分,選取「AllViewerExceptHostHeader」AllViewerExceptHostHeader。這樣一來,CloudFront 就能將驗證標頭轉送至 S3,讓 Storage 移轉服務可以使用您的安全憑證存取值區。
  8. 在「網頁應用程式防火牆 (WAF)」部分,選取「不啟用」
  9. 視需要選擇價格類別。Storage Transfer Service 會根據來源值區的區域選取工作站集區,因此會產生該區域的 CloudFront 費用。如要取得最低價格,請確認來源值區位於美國或歐洲,或是在 CloudFront 中選取「僅使用北美和歐洲」做為價格類別
  10. 按一下「建立 CloudFront 發布區」

    建立成功後,系統會顯示 CloudFront 發布端詳細資料頁面。

  11. 請記下發布網域名稱。例如: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 存取您的物件 (如果您的值區為私密),就會收到 permission denied 錯誤。
  • Storage 移轉服務會使用您在傳輸工作中提供的憑證,為 CloudFront 的請求簽署,讓我們可以安全地下載您的物件,就像直接從 S3 下載一樣。這是因為標頭轉送設定 AllViewerExceptHostHeader 會讓這項功能運作。