使用 Amazon CloudFront 起源 Shield - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon CloudFront 起源 Shield

CloudFront Origin Shield 是 CloudFront 快取基礎架構中的另一層,有助於將原始伺服器的負載降到最低、改善其可用性,並降低其營運成本。使用 CloudFront 起源 Shield 牌,您可以獲得以下好處:

緩衝區快取命中率

Origin Shield 可以幫助您提高 CloudFront 發行版本的緩存命中率,因為它在您的來源前提供了一層額外的緩存。當您使用 Origin Shield 時,來自所有快取層對您來源的 CloudFront所有要求都會透過 Origin Shield 進行,從而增加快取命中的可能性。 CloudFront可以使用來自 Origin Shield 的單一來源請求擷取每個物件至您的來源,而 CloudFront 快取的所有其他層 (邊緣位置和區域節點快取) 都可以從 Origin Shield 擷取物件。

減少原始伺服器負載

Origin Shield 可以進一步減少針對相同物件傳送到原始伺服器的同時請求數量。對於不在 Origin Shield 快取中的內容請求會與相同物件的其他請求整合,因此只需要一個請求,即可傳送到您的原始伺服器。在來源處理較少的請求可以在尖峰負載或意外流量尖峰期間保留原始伺服器的可用性,並且可以降低 just-in-time封裝、映像轉換和資料傳出 (DTO) 等成本。

更好的網路效能

當您在與原始伺服器延遲最低的 AWS 地區啟用 Origin Shield 時,您可以獲得更好的網路效能。對於某個 AWS 區域中的來源, CloudFront 網路流量會一直保留在您的來源的高輸送量 CloudFront 網路上。對於以外的來源 AWS, CloudFront 網路流量會一直保留在 CloudFront 網路上,直到 Origin Shield,因為它與您的原始伺服器具有低延遲連線。

使用 Origin Shield 會產生額外費用。如需詳細資訊,請參閱CloudFront 定價

Origin Shield 的使用案例

CloudFront 起源 Shield 對許多使用案例都有益,包括以下內容:

  • 分佈在不同地理區域的檢視器

  • 為即時串流或 on-the-fly影像處理提供 just-in-time 封裝的來源

  • 具有容量或頻寬限制的內部部署原始伺服器

  • 使用多個內容交付網路 (CDN) 的工作負載

Origin Shield 在其他情況下可能不太適合,例如代理至原始伺服器的動態內容、快取性低的內容,或很少請求的內容。

以下各節說明 Origin Shield 對於下列使用案例的好處。

不同地理區域的檢視器

使用 Amazon CloudFront,您本質上可以減少來源的負載,因為 CloudFront 可以從緩存提供的請求不會轉到您的來源。除了全球 CloudFront節點網路之外,區域節點快取還可做為中間層快取層,以提供快取命中,並整合附近地理區域中檢視者的原始要求。檢視器要求會先路由到附近的 CloudFront 節點,如果物件未快取在該位置,則會將要求傳送至地區邊緣快取。

當檢視器位於不同的地理區域時,可以透過不同的區域邊緣快取路由請求,每個請求都可以將相同內容的請求傳送至您的原始伺服器。但是,有了 Origin Shield,您可以在區域邊緣快取和您的原始伺服器之間獲得額外的一層快取。來自所有區域邊緣快取的所有請求都會經過 Origin Shield,進一步減少原始伺服器的負載。下圖說明此概念。在下圖中,原點是 AWS Elemental MediaPackage。

沒有 Origin Shield

如果沒有 Origin Shield,您的原始伺服器可能會收到相同內容的重複請求,如下圖所示。

如果沒有 CloudFront 起源 Shield 牌,原點可能會收到重複的請求。

具備 Origin Shield

使用 Origin Shield 有助於減少原始伺服器的負載,如下圖所示。

有了起 CloudFront 源 Shield 牌,原始伺服器可以減少接收重複的要求。

多個 CDN

若要提供即時視訊活動或熱門隨需內容,您可以使用多個內容交付網路 (CDN)。使用多個 CDN 可以提供某些好處,但這也表示您的原始伺服器可能會收到許多相同內容的重複請求,每個請求都來自不同的 CDN 或相同 CDN 中的不同位置。這些冗餘要求可能會對原始伺服器的可用性造成不利影響,或對 just-in-time 封裝或資料傳出 (DTO) 到網際網路等程序造成額外的作業成本。

當您將 Origin Shield 與使用您的 CloudFront 發行版作為其他 CDN 的來源結合使用時,您可以獲得以下好處:

  • 減少原始伺服器收到的冗餘請求,這有助於降低使用多個 CDN 的負面影響。

  • 跨 CDN 的常見快取金鑰 ,以及集中式管理原始伺服器面相的功能。

  • 改善的網路效能。來自其他 CDN 的網路流量會在附近的 CloudFront 邊緣位置終止,這可能會提供來自本機快取的點擊。如果要求的物件不在節點位置快取中,則對來源的要求會一直保留在 CloudFront 網路上,一直到 Origin Shield,這可為來源提供高輸送量和低延遲。如果請求的物件位於 Origin Shield 的快取中,可完全避免原始伺服器的請求。

重要

如果您有興趣在多 CDN 架構中使用 Origin Shield,並且有折扣價格,請聯絡我們或您的 AWS 銷售代表以取得詳細資訊。可能需支付額外費用。

下圖顯示當您使用多個 CDN 提供熱門即時視訊活動時,此組態如何幫助將原始伺服器的負載降至最低。在下圖中,原點是 AWS Elemental MediaPackage。

沒有 Origin Shield (多個 CDN)

沒有 Origin Shield,您的原始伺服器可能會收到相同內容的重複請求,每個請求都來自不同的 CDN,如下圖所示。

顯示來源如何接收來自不同 CDN 的重複請求的圖形。

具備 Origin Shield (多個 CDN)

使用 Origin Shield CloudFront 作為其他 CDN 的來源,可協助減少來源的負載,如下圖所示。

顯示 CloudFront 原始 Shield 牌接收到較少重複請求的圖形。

選擇原點護 Shield 的 AWS 區域

Amazon 在具有區域邊緣快取的 AWS 區域 CloudFront 提 CloudFront 供原始 Shield。當您啟用原始護 Shield 時,您可以選擇原始護 Shield 的 AWS 區域。您應該為原始伺服器選擇最低延遲的 AWS 區域。您可以對 AWS 區域中的原點使用原點護 Shield,以及原點不在 AWS。

對於 AWS 區域中的原始伺服器

如果您的出發地位於某個 AWS 地區,請先確定您的出發地是否位於 CloudFront 提供 Origin 護 Shield 的地區。 CloudFront 在以下 AWS 區域提供原點護 Shield。

  • 美國東部 (俄亥俄) – us-east-2

  • 美國東部 (維吉尼亞北部) – us-east-1

  • 美國西部 (奧勒岡) – us-west-2

  • 亞太區域 (孟買) – ap-south-1

  • 亞太區域 (首爾) – ap-northeast-2

  • 亞太區域 (新加坡) – ap-southeast-1

  • 亞太區域 (雪梨) – ap-southeast-2

  • 亞太區域 (東京) – ap-northeast-1

  • 歐洲 (法蘭克福) – eu-central-1

  • 歐洲 (愛爾蘭) – eu-west-1

  • 歐洲 (倫敦) – eu-west-2

  • 南美洲 (聖保羅) – sa-east-1

如果您的出發地位於提 CloudFront 供起源護 Shield 的 AWS 地區

如果您的出發地位於 CloudFront 提供 Origin 護 Shield 的 AWS 地區(請參閱前面的清單),請在與您的出發地相同的地區啟用 Origin 護 Shield。

如果您的出發地不在提 CloudFront供起源護 Shield 的 AWS 地區

如果您的出發地不在提 CloudFront 供起源護 Shield 的 AWS 地區,請參閱下表以確定要在哪個區域中啟用起源護 Shield。

如果您的原始伺服器在...

Origin Shield 啟用於...

美國西部 (加利佛尼亞北部) – us-west-1

美國西部 (奧勒岡) – us-west-2

非洲 (開普敦) – af-south-1

歐洲 (愛爾蘭) – eu-west-1

亞太區域 (香港) – ap-east-1

亞太區域 (新加坡) – ap-southeast-1

加拿大 (中部) – ca-central-1

美國東部 (維吉尼亞北部) – us-east-1

歐洲 (米蘭) – eu-south-1

歐洲 (法蘭克福) – eu-central-1

歐洲 (巴黎) – eu-west-3

歐洲 (倫敦) – eu-west-2

歐洲 (斯德哥爾摩) – eu-north-1

歐洲 (倫敦) – eu-west-2

中東 (巴林) – me-south-1

亞太區域 (孟買) – ap-south-1

對於 外部的原始伺服器 AWS

您可以將 Origin Shield 與內部部署的原始伺服器或不在 AWS 區域中的原始伺服器搭配使用。在這種情況下,請在與原始伺服器延遲最低的 AWS 地區啟用 Origin Shield 牌。如果您不確定哪個 AWS 地區對您的來源延遲最低,可以使用以下建議來幫助您做出決定。

  • 您可以參閱上表,根據原始伺服器的地理區域,了解哪個 AWS 區域對您的原始伺服器有最低延遲。

  • 您可以在幾個地理位置靠近原始地點的不同 AWS 區域啟動 Amazon EC2 執行個體,並使用執行一些測試,ping以測量這些區域和您的來源之間的一般網路延遲。

啟用 Origin Shield

您可以啟用 Origin Shield 來改善快取命中率、降低原始伺服器的負載,並協助改善效能。若要啟用原點護 Shield,請變更 CloudFront 分佈中的原點設定。Origin Shield 是原始伺服器的屬性。針對您 CloudFront 發行版中的每個來源,您可以在任何 AWS 地區分別啟用 Origin Shield,為該來源提供最佳效能。

您可以使用或使 AWS CloudFormation用 CloudFront API 在 CloudFront 主控台中啟用原始 Shield 牌。

Console
若要為現有的原始伺服器啟用 Origin Shield (主控台)
  1. 登入 AWS Management Console 並開啟 CloudFront 主控台,位於https://console.aws.amazon.com/cloudfront/v4/home

  2. 選擇包含您要更新之原始伺服器的分佈。

  3. 選擇 Origins and Origin Groups (原始伺服器和原始伺服器群組) 索引標籤。

  4. 選擇要更新的原始伺服器,然後選擇 Edit (編輯)

  5. 對於 Enable Origin Shield (啟用 Origin Shield),選擇 Yes (是)

  6. 在「原點護 Shield 區域」中,選擇您要啟用原始護 Shield 的 AWS 區域。如需選擇區域的說明,請參閱選擇原點護 Shield 的 AWS 區域

  7. 在頁面底部,選擇執行

當您的分佈狀態為 Deployed (已部署),Origin Shield 便已就緒。這需要幾分鐘的時間。

為新的原始伺服器啟用 Origin Shield (主控台)
  1. 登入 AWS Management Console 並開啟 CloudFront 主控台,位於https://console.aws.amazon.com/cloudfront/v4/home

  2. 若要在現有分佈中建立新的原始伺服器,請執行下列動作:

    1. 選擇您要在其中建立原始伺服器的分佈。

    2. 選擇 Create Origin (建立原始伺服器),然後繼續步驟 3。

    若要在新分佈中建立新的原始伺服器,請執行下列動作:

    1. 選擇 Create Distribution (建立分佈)

    2. Web 區段中,選擇 Get Started (開始使用)。在 Origin Settings (原始伺服器設定) 區段中,從步驟 3 開始,完成以下步驟。

  3. 對於 Enable Origin Shield (啟用 Origin Shield),選擇 Yes (是)

  4. 在「原點護 Shield 區域」中,選擇您要啟用原始護 Shield 的 AWS 區域。如需選擇區域的說明,請參閱選擇原點護 Shield 的 AWS 區域

    如果您要建立新分佈,請使用頁面上的其他設定,繼續設定您的分佈。如需更多詳細資訊,請參閱 發佈設定參考

  5. 請務必選擇 Create (建立) (適用於現有分佈中的新原始伺服器) 或 Create Distribution (建立分佈) (適用於新分佈中的新原始伺服器)。

當您的分佈狀態為 Deployed (已部署),Origin Shield 便已就緒。這需要幾分鐘的時間。

AWS CloudFormation

若要啟用原始 Shield AWS CloudFormation,請在OriginShieldAWS::CloudFront::Distribution資源中使用Origin屬性類型中的屬性。您可以將 OriginShield 屬性新增至現有的 Origin,或在建立新的 Origin 時,加入該屬性。

下列範例顯示 YAML 格式的語法,適用於在美國西部 (奧勒岡) 區域 (OriginShield) 中啟用 us-west-2。如需選擇區域的說明,請參閱選擇原點護 Shield 的 AWS 區域。此範例僅顯示 Origin 屬性類型,而不是整個 AWS::CloudFront::Distribution 資源。

Origins: - DomainName: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com Id: Example-EMP-3ae97e9482b0d011 OriginShield: Enabled: true OriginShieldRegion: us-west-2 CustomOriginConfig: OriginProtocolPolicy: match-viewer OriginSSLProtocols: TLSv1

如需詳細資訊,請參閱《AWS CloudFormation 使用指南》中的資源和屬性參考一節中的 AWS::CloudFront::Distribution Ori gin。

API

若要使用 AWS SDK 或 AWS Command Line Interface (AWS CLI) 透過 CloudFront API 啟用原始 Shield,請使用OriginShield類型。在 OriginShield 中,指定 Origin 中的 DistributionConfig,。如需有關OriginShield類型的資訊,請參閱 Amazon CloudFront API 參考中的下列資訊。

使用這些類型和操作的特定語法會根據軟體開發套件、CLI 或 API 用戶端而有所不同。如需詳細資訊,請參閱軟體開發套件、CLI 或用戶端的參考文件。

預估 Origin Shield 成本

您可以根據進入 Origin Shield 做為增量層的請求數量來累算 Origin Shield 的費用。

對於代理至原始伺服器的動態 (非可快取) 請求,Origin Shield 一律為增量層。動態請求使用 HTTP 方法PUTPOSTPATCH、和DELETE

GET而且存留時間 (TTL) 設定小於 3600 秒的HEAD要求會被視為動態要求。此外,GET和已禁用緩存的HEAD請求也被視為動態請求。

若要針對動態請求預估 Origin Shield 的費用,請使用下列公式:

動態請求總數 x 每 10,000 個請求的 Origin Shield 費用 / 10,000

對於使用 HTTP 方法GET、和的非動態要求 HEADOPTIONS,來源 Shield 有時是增量層。當您啟用起源護 Shield 時,您可以選 AWS 區域 擇原點護 Shield。對於自然會移至與原始護 Shield 相同區域中的區域邊緣快取的要求,Origin Shield 並不是增量層。您不會為這些要求累積起源護 Shield 費用。如果要求移至與原始護 Shield 不同區域的區域邊緣快取,然後移至「原始護 Shield」,「起源護 Shield」是一個增量層。您會對這些請求累算 Origin Shield 費用。

若要針對可快取請求預估 Origin Shield 的費用,請使用下列公式:

可快取請求的總數 x (1 – 快取命中率) x 不同區域中從區域節點快取移至 Origin Shield 的請求百分比 x 每 10,000 個請求的 Origin Shield 費用 / 10,000

如需有關原始 Shield 牌每 10,000 個請求收費的詳細資訊,請參閱CloudFront 定價

Origin Shield 高可用性

起源 Shield 牌利用 CloudFront 區域邊緣快取功能。這些邊緣快取中的每一個都建立在一個 AWS 區域中,至少使用三個可用區域,其中包含 auto-scaling 的 Amazon EC2 執行個體叢集。從位 CloudFront置到 Origin Shield 的連線也會針對每個請求使用作用中的錯誤追蹤,以便在主要原點護 Shield 位置無法使用時,自動將請求路由至次要的 Origin Shield 位置。

起源 Shield 如何與其他功能互 CloudFront 動

以下各節將說明起源護 Shield 如何與其他 CloudFront功能互動。

起源 Shield 牌和 CloudFront 記錄

若要查看 Origin Shield 何時處理請求,您必須啟用下列其中一項:

來自 Origin Shield 的快取命中會顯示OriginShieldHit在 CloudFront 記錄檔中的x-edge-detailed-result-type欄位中。起源 Shield 利用 Amazon CloudFront 的區域邊緣緩存。如果要求從 CloudFront 節點路由至作為 Origin Shield 的地區邊緣快取,則會在記錄檔Hit中報告為一個,而不是OriginShieldHit

Origin Shield 和原始伺服器群組

原點 Shield 牌與CloudFront 原始群組相容。由於 Origin Shield 是原始伺服器的屬性,因此,即使原始伺服器是原始伺服器群組的一部分,請求一律會針對每個原始伺服器透過 Origin Shield 來傳輸。針對指定的要求,會透過主要來源的 Origin Shield 將請求 CloudFront 路由至原始群組中的主要來源。如果該要求失敗 (根據原始群組容錯移轉準則),請透過次要原點的 Origin Shield 將要求 CloudFront 路由至次要原點。

Origin Shield 和 Lambda@Edge

Origin Shield 不會影響 Lambda@Edge 函數的功能,但它會影響這些函數執行所在的 AWS 區域。

當您將原始 Shield 牌與 Lambda @Edge 搭配使用時,面向原點的觸發程序 (原始請求和來源回應) 會在啟用原始護 Shield 的 AWS 區域中執行。如果主要的起點護 Shield 位置無法使用,並且將請求 CloudFront 路由到次要的起點護 Shield 位置,Lambda @Edge 面向起點的觸發器也會轉換為使用次要原點護 Shield 位置。

檢視器面向觸發程序不會受到影響。