Amazon CloudFront 教學課程:為 Amazon S3 設定動態內容分發

如何為 Amazon S3 設定 Amazon CloudFront 分發

Amazon CloudFront 可與 Amazon Simple Storage Service (Amazon S3) 無縫搭配使用,以加快 Web 內容的交付速度,並減少原始伺服器上的負載。對於希望將資料儲存在雲端,並將其作為 Web 內容來交付的人而言,Amazon S3 是絕佳選擇。如果您想要交付功能或動態內容,請查看如何為 Amazon Elastic Compute Cloud (Amazon EC2) 設定 Amazon CloudFront 分發

觀看此 AWS TechTips 示範,了解如何設定您的 Amazon CloudFront CDN 分發

對 Amazon S3 設定 Amazon CloudFront 發行有何好處?

Amazon CloudFront 內容交付網路 (CDN) 分發可為 S3 使用者帶來許多好處。

快速的資料傳輸速度

CloudFront 可讓您快速向世界各地的檢視者提供內容。許多 CloudFront 邊緣節點都會將您的內容快取並交付至更接近使用者之處,從而降低原始伺服器的延遲和容量負荷。

提升了安全性和效能

CloudFront 也會限制對 S3 儲存貯體的存取。藉由僅允許 CloudFront 端點給予您的內容的存取權,您的應用程式將更安全,且回應速度更快。

符合成本效益的資料傳輸

CloudFront 定價可讓您根據預算自訂交付。AWS 不收取 AWS 託管的來源 (例如 S3 和 CloudFront) 之間的資料傳輸費用,來源擷取因而成為符合成本效益的選項。

如何使用 CloudFront 和 S3 加快動態內容載入速度

步驟 1.移至 AWS Console

首先,登入 AWS 管理主控台,然後從服務清單中選取 Amazon S3。 

步驟 2.建立 Amazon S3 儲存貯體

在這裡,您可以:

  • 選取 [建立儲存貯體] 以建立 S3 儲存貯體 (如果您還沒有 S3 儲存貯體)。
  • 指定與 DNS 相容的儲存貯體名稱。
  • 選取您想要讓儲存貯體位於哪個區域。

然後,您可以建立儲存貯體。您可以使用主控台或 S3 API 將更多檔案新增至儲存貯體,或建立新的儲存貯體 (如果您想要的話)。最初建立 S3 儲存貯體時,傳播 DNS 名稱變更需要一些時間,通常不超過 15 分鐘。

步驟 3.建立 CloudFront 分佈

接下來,從 AWS Console 服務清單的網路和內容交付區段移至 CloudFront。如果您已開啟 CloudFront,或許可從歷史記錄中加以快速存取。在這裡,您可以按一下建立分發,以建立新的 Web 分發。  

步驟 4.指定您的分發設定

現在,您可以開始輸入您的分發設定。首先,指定您在原始網域名稱欄位中建立的 S3 網域。  

步驟 5.設定您的來源

輸入您的原始網域名稱。如果您在相同的 AWS 帳戶中建立了 S3 儲存貯體,應該會顯示在欄位內的下拉式清單中。如果位於不同的帳戶中,請檢查您的儲存貯體設定,以給予 CloudFront 存取權限。

給予存取權限可讓 CloudFront 能夠從您的儲存貯體中讀取物件。如果您將所有物件放在子資料夾中,也可以指定來源路徑。

步驟 6.設定原始存取身分

在這裡,您可以限制對 Amazon S3 來源的存取。如果您選取「是」,系統會要求您建立原始存取身分或選取現有的存取身分,讓 CloudFront 能夠從您的儲存貯體中讀取物件。您也可以選擇允許 CloudFront 為您更新儲存貯體政策。

如果您選擇不限制存取,使用者可能會繞過您的 CloudFront,並透過 S3 儲存貯體 URL 直接存取您的內容。對於任何私人或敏感內容,務必要設定正確的存取限制。

在本節中,如果您將所有物件儲存在子資料夾中,也可以指定來源路徑。您可以提供具有指定值的來源自訂標頭,CloudFront 會隨著每個請求將標頭轉送至來源。這對於自訂來源很有用,因為可以顯示哪個請求來自 CloudFront,哪個來自另一個用戶端。

步驟 7.設定預設快取行為

然後,您在「預設快取行為設定」下會有多種選項。

檢視器通訊協定政策可讓您選擇處理 HTTP 和 HTTPS 通訊協定的方式。您可以選擇將 HTTP 請求重新導向至 HTTPS,以便您可以使用任一通訊協定支援請求 (舉例而言)。您也可以指定僅支援 HTTPS,在這種情況下,HTTP 流量會遭到捨棄。這可確保您符合 Web 安全性的最佳做法。

CloudFront 允許您指定要讓它接受哪些 HTTP 方法。預設設定為 GET、HEAD。選取其他選項之一 (GET、HEAD、OPTIONS,或 GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE),可讓您設定 CloudFront 如何快取選項方法。

然後,您可以指定要轉送至來源的 HTTP 標頭。一般情況下,建議根據 Amazon S3 來源的相關請求和回應行為允許標頭。特別是,如果您的來源正在查看特定 HTTP 標頭以決定要傳回哪個物件,則應允許這些標頭。如果轉送所有 HTTP 標頭,CloudFront 實際上將會繞過快取層,而完全不會嘗試快取物件。

步驟 8.設定您的 TTL

在接下來的這一節中,您可以指定存留時間 (TTL),管理內容在到期前保留在快取中的時間。依預設會選取使用來源快取標頭。或者,您可以自訂物件儲存在 CloudFront 快取中的時間上限和下限。

如果您選擇編輯這些設定,系統會提示您輸入最小和最大 TTL (以秒為單位)。然後,如果您的標頭傳回的值超過最小值或最大值,CloudFront 將使用您的最小或最大 TTL。如果值在這些界限內,則 CloudFront 會使用您的來源傳回的值。

如果您的來源未傳回任何快取控制標頭,則會改用預設 TTL。在我們的範例影片中,預設值設定為 86,400 秒,相當於 24 小時。

步驟 9.設定其他功能

在接下來的這一節中,您可以選擇根據 Cookie 快取內容查詢字串參數

與 HTTP 標頭一樣,建議僅允許與您的來源相關的 Cookie 或查詢字串值。您也可以轉送這些項目,CDN 仍會嘗試加以快取。若選擇全部轉送請多加留意 — 如果 CloudFront 轉發所有項目,可能會大幅降低快取命中率。因此,可能會有大量物件因查詢和 Cookie 值的不同變化而快取多次。

然後,您在下列欄位中會有更多選項:

分發設定底下,您可以指定要使用 CloudFront 網路的哪些部分。根據預設,CloudFront 會使用所有邊緣節點以達到最佳效能。這有助於盡快將您的內容提供到世界各地。

如果您預期只有特定區域 (例如美國、加拿大和歐洲) 才有檢視者,您可以僅將這些區域指定為較低的價格類別。這並不意味著這些區域以外的檢視者無法存取您的內容 — CloudFront 實際上會將內容路由到最近的邊緣節點。如果您將AWS Web Application Firewall (AWS WAF) 與 CloudFront 一起使用,您也可以在此處進行這些設定。

在儲存分發之前,請務必管理您的安全通訊端層 (SSL) 憑證。這裡有兩個選項:

  • 使用預設 CloudFront 憑證
  • AWS Certificate Manager (ACM) 上傳或請求自訂 SSL 憑證,並將其與您的 CloudFront 分發建立關聯 (適用於您使用自訂網域時)。

最後,您可以使用其餘設定來指定:

  • 您要使用哪些支援的 HTTP 版本
  • 您是否要使用記錄,以及 CloudFront 應使用哪個日誌儲存貯體來儲存任何存取日誌。
  • Cookie 記錄是否處於作用中狀態。

在這裡,您可以輸入描述並建立分發。儲存後,分發大約需要 15 分鐘才會在全球部署。

步驟 10.測試您的 CloudFront 分發

分發準備就緒後,您可以按一下以查看設定。第一個畫面會顯示一些索引標籤,和您指定的組態設定。在這裡,您可以視需要新增其他來源和多個快取行為。

CloudFront 也允許您建立自訂錯誤頁面,或藉由選取建立客戶錯誤回應來變更錯誤回應保留在快取中的時間。您可以針對個別的 HTTP 錯誤代碼調整這些設定。假設您想要在每次遇到 403 時重試,您可以將最短 TTL 指定為 0 秒。根據預設,CloudFront 會快取所有內容達 300 秒,以減輕來源的部分負載。您也可以為每個錯誤代碼建立自訂錯誤回應 (如果您想要的話)。

限制索引標籤中,您可以啟用地理限制,以允許或禁止特定位置的檢視者查看您的內容。失效索引標籤可讓您從 CloudFront 邊緣快取中移除自訂物件。最後,您可以使用標籤索引標籤來套用自訂標籤,以利組織和識別分發。

完成後,複製網域並將其貼到您的瀏覽器中,以查看分發的運作情形。您也可以了解如何使用 CloudFront 與 Amazon EC2 Web 伺服器執行個體來交付應用程式的動態內容

Amazon CloudFormation 範本可協助您開始使用 CloudFront

Amazon CloudFormation 範本也可協助您開始使用 CloudFront。 此範本將啟動 S3 儲存貯體,以大規模儲存您的靜態檔案,然後透過 CloudFront CDN 將該內容交付給您的使用者。

如需詳細資訊,請閱讀標題為 Amazon S3 + Amazon CloudFront:天作之合的部落格文章,並取得 CloudFormation 範本。

關於使用 CloudFront 交付內容的其他資源

不確定如何開始使用 Cloudfront? 請參閱我們的開始使用內容交付網路,或前往 Amazon Web 服務內容交付網路文件中樞

請在我們的 Premium Support 知識中心,查看下列關於在 S3 上管理 CloudFront 分發的資源:

探索更多 Amazon CloudFront 資源

瀏覽資源頁面
準備好開始建置?
開始免費使用 Amazon CloudFront
還有其他問題嗎?
聯絡我們