使用 Amazon CloudFront

在本教學中,您會學習如何使用 Amazon CloudFront 交付內容,並減少 web 應用程式的最終使用者延遲。CloudFront 運用稱為節點的全球資料中心網路來加速內容交付,藉由快取接近最終使用者的內容來縮短交付時間。當節點中尚未有內容時,CloudFront 會從來源,例如 Amazon S3 儲存貯體、Amazon EC2 執行個體、Amazon Elastic Load Balancing 負載平衡器或您自己的 Web 伺服器取得內容。CloudFront 可用於交付整個網站或應用程式,包括動態、靜態、串流和互動內容。

在下列步驟中,您會設定 Amazon S3 儲存貯體做為來源,並使用 Web 瀏覽器來測試分發,以確認系統正在交付內容。

此教學中的所有操作都可用免費方案資格來進行。

更快交付內容需要一個帳戶

登入主控台

AWS 免費方案包括每月 50 GB 的資料傳出和 2,000,000 次 HTTP 或 HTTPS 請求,為期一年。 

查看 AWS 免費方案詳細資訊 »


在這個步驟中,我們會把範本靜態內容上傳到 Amazon S3 儲存貯體。在後面的步驟中,我們將使用這個儲存貯體作為 CloudFront 來源。對於包含靜態內容 (例如影像、視訊、HTML 頁面、.css 檔案和 .js 檔案) 的 Amazon CloudFront 來源,Amazon S3 是不錯的選擇。


a. 我們在本教學中使用的範例映像,是名為 cloudfront-test-image.png 的 PNG 映像。 按一下右方的按鈕下載範例映像,並確認將其另存為 cloudfront-test-image.png

下載範例映像

b. 按一下這裡,即會在新瀏覽器視窗中開啟 AWS 管理主控台。在搜尋方塊中輸入 S3,然後按兩下開啟儀表板。

tmt_faster-content-delivery-01

(按一下以縮放)

tmt_faster-content-delivery-01

c. 您現已位於 S3 儀表板,按一下「Create Bucket (建立儲存貯體)」按鈕。

  • Bucket Name (儲存貯體名稱)」:輸入儲存貯體的名稱 - 其必須是唯一的且全部小寫。如需關於其他 S3 儲存貯體名稱限制的資訊,請參閱 Bucket Restrictions and Limitations
  • 區域」:您可選擇最接近的區域來最佳化延遲、將成本降至最低,或是合乎法規要求。

選取「Next (下一步)」。

在「Set properties (設定屬性)」面板中,有很多實用的 S3 儲存貯體選項,包括「Versioning (版本控制)」、「Server Access Logging (伺服器存取日誌記錄)」、「Tags (標籤)」、「Object-level Logging (物件等級日誌記錄)」和「Default Encryption (預設加密)」。我們不會在此教學啟用這些功能。

選取「Next (下一步)」。

在「Set permissions (設定許可)」面板中,您可以為我們的儲存貯體設定存取控制許可。我們不會在此教學啟用這些功能。

選取「Next (下一步)」。

在「Review (審閱)」面板上,選擇「Create bucket (建立儲存貯體)」。

tmt_faster-content-delivery-02

(按一下以縮放)

tmt_faster-content-delivery-02

d. 按兩下儲存貯體名稱。選擇「Upload (上傳)」,然後選擇「Add Files (新增檔案)」,接下來從電腦中選擇「cloudfront-test-image.png 

選取 Next

tmt_faster-content-delivery-03

(按一下以縮放)

tmt_faster-content-delivery-03

e. 在「Set permissions (設定許可)」標籤上,您需要將影像設為公開可讀。 依預設,S3 物件會設為私有。將「Manage public permissions (管理公共許可)」變更為「Grant public access to objects(s) (將公共存取權授予物件)」。

選取「Next (下一步)」。

在「Set properties (設定屬性)」標籤中,可以設定「Storage class (儲存體類別)」、「Encryption (加密)」和「中繼資料 (Metadata)」。我們不會在此教學啟用這些功能。

選取「Next (下一步)」。

在「Review (審閱)」標籤中,查看檔案上傳。

選取 Upload

tmt_faster-content-delivery-04

(按一下以縮放)

tmt_faster-content-delivery-04

將內容上傳至 Amazon S3 後,即可使用 Amazon CloudFront 主控台將內容交付至全球各地的最終使用者。


A. 按一下這裡,即會在新瀏覽器標籤中開啟 AWS 管理主控台。 在「Storage & Content Delivery (儲存與內容交付)」下尋找 CloudFront,然後按一下開啟「Amazon CloudFront 主控台」。

tmt_faster-content-delivery-06

(按一下以縮放)

tmt_faster-content-delivery-06

b.  選取「Create Distribution (建立分發)」。


 

tmt_faster-content-delivery-07

(按一下以縮放)

tmt_faster-content-delivery-07

Web 分發會指定組態設定,以讓 CloudFront 在使用者提出請求時瞭解要從哪個來源取得內容。您可使用 Amazon S3 儲存貯體 (儲存資料夾) 和 HTTP 伺服器 (例如 web 伺服器) 做為來源。


a. 您會先選擇內容的交付方法。 Web 分發適用於靜態與動態內容,RTMP 分發最適合使用 Adobe Flash Media Server 之 RTMP 通訊協定的串流媒體檔案。

由於 cloudfront-test-image.png 為靜態映像,請在 Web 選項下方選取「Get Started (開始使用)」。

tmt_faster-content-delivery-08

(按一下以縮放)

tmt_faster-content-delivery-08

b. 您現已可配置設定。 

在「Origin Domain Name (來源網域名稱)」中,選取您在其中儲存 cloudfront-test-image.png 的 S3 儲存貯體名稱。

您可將其餘的組態設定,保留為本教學所用的預設值。 若您想要進一步了解每個組態設定,請按一下位於下方的下拉式清單。

預設快取行為設定:

分發設定:

  • Price Class (價格分級)」:CloudFront 具有三種「價格分級」,其是由您想要在全球各地支援的「節點」數量來決定。依預設,CloudFront 會使用所有節點以確保提供最佳效能。如需詳細資訊,請參閱「Amazon CloudFront 定價」。
  • AWS WAF Web ACL:若您想要根據指定的準則允許或封鎖 HTTP 和 HTTPS 請求,請選擇 Web ACL 以與此分發建立關聯。如需詳細資訊,請參閱 AWS WAF Developer Guide
  • Alternate Domain Names (替代網域名稱)」:當您建立 Web 分發時,CloudFront 會自動為您指派一個網域名稱 (例如:http://abcdefghi888.cloudfront.net/filename.jpg)。更新 DNS 組態後,您亦可針對物件在 URL 中指定專屬的網域名稱 (例如:http://yourDomain.com/filename.jpg),以將 DNS 查詢路由至 CloudFront 分發。針對本教學,請將此欄位留空。
  • SSL Certificate (SSL 憑證)」:CloudFront 提供預設憑證,或者亦可指定自訂 SSL 憑證。
  • Default Root Object (預設根物件)」:您可在此處指定當使用者僅請求分發的根 URL 時,想讓 CloudFront 從來源請求的物件。例如,若使用者請求 http://www.example.com/,則您可指定交付 http://www.example.com/product-description.html。指定預設根物件可避免公開分發的內容。
  • Logging (記錄)」:CludFront 可針對物件記錄關於每項請求的資訊,並將記錄檔案存放在 Amazon S3 儲存貯體中。啟用記錄功能無需額外收費,但存放與存取檔案會產生 Amazon S3 費用。
  • Bucket for Logs (記錄的儲存個體)」:若您指定 Amazon S3 儲存貯體存放存取記錄,則 CloudFront 可針對物件記錄有關每項使用者請求的資訊,並將檔案存放在指定的 Amazon S3 儲存貯體中。您可隨時啟用或停用記錄。如需關於 CloudFront 存取記錄的詳細資訊,請參閱 Access Logs
  • Log Prefix (記錄字首)」:若您針對「Logging (記錄)」選擇「On (開啟)」,則可指定要讓 CloudFront 針對此分發加在存取記錄檔名開頭做為字首的字串。如需關於 CloudFront 存取記錄的詳細資訊,請參閱 Access Logs
  • Cookie Logging (Cookie 記錄)」:若使用 Amazon S3 做為物件來源,則 Amazon S3 不會處理 Cookie,因此除非分發亦包含 Amazon EC2 或其他自訂來源,您必須針對「Cookie Logging (Cookie 記錄)」的值選取「Off (關閉)」。如需有關 Cookie 的詳細資訊,請參閱 Configuring CloudFront to Cache Objects Based on Cookies
  • Comment (評論)」:您可輸入任何想要與分發一併儲存的評論。
  • Distribution Status (分發狀態)」:預設值為「Enabled (啟用)」。這表示內容在分發建立完成時即可提供使用。
tmt_faster-content-delivery-09

(按一下以縮放)

tmt_faster-content-delivery-09

設定分發後,CloudFront 即會在整個 CloudFront 網路上建立並散佈分發,以供您使用。選取「Create Distribution (建立分發)」。

此程序完成後,狀態欄即會從「In Progress (進行中)」變更為「Deployed (已部署)」。

注意:完成此程序需要數分鐘的時間。

CloudFront 指派至分發的網域名稱,會顯示於分發清單中。您必須記住該名稱,以在下個步驟中使用。 按一下「Distribution ID (分發 ID)」欄位即會引導至頁面,您會在其中的「Domain Name (網域名稱)」下方看見完整的 CloudFront 網域。

tmt_faster-content-delivery-10

(按一下以縮放)

tmt_faster-content-delivery-10

建立 Web 分發後,您可確認 CloudFront 從來源取得物件並將其回傳至 Web 瀏覽器,以針對該分發進行測試。 針對此測試,您必須使用「步驟 4」中的 CloudFront 網域名稱,以及在步驟 1 中上傳至 S3 儲存貯體的映像名稱。


a. 在電腦上開啟文字編輯器。複製並貼上下列 HTML 程式碼:

My CloudFront Test

My text content goes here.

my test image

  • domain name 取代為 CloudFront 指派至分發的網域名稱,例如 d111111abcdef8.cloudfront.net
  • object name 取代為 Amazon S3 儲存貯體中的映像檔名稱 – 在此為 cloudfront-test-image.png
  • 將檔案中的文字另存為 mycloudfronttest.html

b. 在瀏覽器中開啟網頁,確認可看見內容。 

cloudfront-16

(按一下以縮放)

cloudfront-16

您可從 CloudFront 主控台輕鬆停用分發。 事實上,停用不再使用的分發是一項最佳實務,如此您就不需要繼續為其付費。不過請注意,若停用分發,則該分發支援的所有網站皆會無法運作,且最終使用者再也無法存取其內容。


a. 在您建立的分發旁選取核取方塊,然後按一下「Disable (停用)」。

tmt_faster-content-delivery-11

(按一下以縮放)

tmt_faster-content-delivery-11

b. 系統將要求您確認 – 按一下「Yes, Disable (是,停用)」。

tmt_faster-content-delivery-12

(按一下以縮放)

tmt_faster-content-delivery-12

您已建立第一個 Amazon CloudFront Web 分發,並透過 Amazon S3 交付一份託管於雲端的靜態內容。藉由數項組態變更,您可透過 HTTP 或 HTTPS 使用 CloudFront 來即時交付動態內容,以及諸如約會、會議或演唱會等即時事件. 使用 Amazon Cloudfront 來加速整個網站或應用程式的交付,包括動態、靜態、串流和互動內容。

現在,您已經學會如何設定 Web 分發並透過 Amazon CloudFront 交付一部分靜態內容,您可以在即將到來的服務時間或即將召開的 AWS 技術會議期間,請教我們的 CloudFront 專家。

Amazon CloudFront 入門頁面 >>