使用 Amazon CloudFront Origin Shield - Amazon CloudFront

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

使用 Amazon CloudFront Origin Shield

CloudFront Origin Shield 是 CloudFront 快取基礎設施中的額外層,可協助您將原始伺服器的負載降至最低、改善其可用性,並降低營運成本。CloudFront Origin Shield 為您提供下列優勢:

緩衝區快取命中率

Origin Shield 在您的原始伺服器前端多加了一層快取,所以可協助提高您 CloudFront 發佈的快取命中率。當您使用 Origin Shield 時,從所有 CloudFront 快取層向原始伺服器提出的所有請求都會經過 Origin Shield,從而增加快取命中的可能性。CloudFront 可以從 Origin Shield 到您的原始伺服器,擷取每個只有單一原始伺服器請求的物件,而 CloudFront 快取的所有其他層 (節點和區域節點快取) 都可以從 Origin Shield 中擷取物件。

減少原始伺服器負載

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

更好的網路效能

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

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

注意

gRPC 請求不支援 Origin Shield。如果支援 gRPC 的分佈已啟用 Origin Shield,則 gRPC 請求將繼續運作。不過,請求將直接代理到 gRPC 原始伺服器,而無需經過 Origin Shield。如需詳細資訊,請參閱使用 gRPC 搭配 CloudFront 分佈

Origin Shield 的使用案例

CloudFront Origin Shield 對許多使用案例都很有幫助,包括:

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

  • 為即時串流或即時映像處理提供即時封裝的原始伺服器

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

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

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

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

不同地理區域的檢視器

使用 Amazon CloudFront,本質上會減少原始伺服器的負載,因為 CloudFront 可從快取提供的請求,不會前往原始伺服器。除了 CloudFront 的節點全域網路以外,區域節點快取也可做為提供快取命中的中層快取層,並整合附近地理區域之檢視器的原始伺服器請求。檢視器請求會先路由到附近的 CloudFront 節點,如果未在該位置快取物件,則將請求傳送至區域節點快取。

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

沒有 Origin Shield

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

沒有 CloudFront Origin Shield,原始伺服器可能會收到重複的請求。

具備 Origin Shield

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

有了 CloudFront Origin Shield,原始伺服器會收到較少的重複請求。

多個 CDN

若要提供即時視訊活動或熱門隨需內容,您可以使用多個內容交付網路 (CDN)。使用多個 CDN 可以提供某些好處,但這也表示您的原始伺服器可能會收到許多相同內容的重複請求,每個請求都來自不同的 CDN 或相同 CDN 中的不同位置。這些冗餘請求可能會對原始伺服器的可用性造成不利影響,或對於即時封裝或資料傳出 (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 Origin Shield 接收較少重複請求的圖形。

選擇 Origin Shield AWS 的區域

Amazon CloudFront 在 CloudFront 具有區域節點快取的 AWS 區域中提供 Origin Shield。啟用 Origin Shield 時,您可以選擇 Origin Shield AWS 的區域。您應該為原始伺服器選擇最低延遲的 AWS 區域。您可以將 Origin Shield 與 AWS 區域中的原始伺服器以及不在其中的原始伺服器搭配使用 AWS。

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

如果您的原始伺服器位於 AWS 區域,請先判斷您的原始伺服器是否位於 CloudFront 提供 Origin Shield 的區域。CloudFront 在以下 AWS 區域中提供 Origin 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

  • 中東 (阿拉伯聯合大公國) – me-central-1

如果您的原始伺服器位於 CloudFront 提供 Origin Shield AWS 的區域

如果您的原始伺服器位於 CloudFront 提供 Origin Shield AWS 的區域 (請參閱上述清單),請在與原始伺服器相同的區域中啟用 Origin Shield。

如果您的原始伺服器不在 CloudFront 提供 Origin Shield AWS 的區域

如果您的原始伺服器不在 CloudFront 提供 Origin Shield 的 AWS 區域中,請參閱下表以決定要在哪個區域中啟用 Origin 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 來改善快取命中率、降低原始伺服器的負載,並協助改善效能。若要啟用 Origin Shield, 請變更 CloudFront 發佈中的原始伺服器設定。Origin Shield 是原始伺服器的屬性。對於 CloudFront 發佈中的每部原始伺服器,您可以在為該原始伺服器提供最佳效能的任何 AWS 區域中分別啟用 Origin Shield。

您可以在 CloudFront 主控台中啟用 Origin Shield AWS CloudFormation,以及使用 CloudFront API 或使用 CloudFront API 啟用 Origin 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. 對於 Origin Shield Region (原始伺服器 Shield Region),選擇您要從中啟用 Shield Region 的 AWS 區域。如需選擇區域的說明,請參閱選擇 Origin 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. 對於 Origin Shield Region (原始伺服器 Shield Region),選擇您要從中啟用 Shield Region 的 AWS 區域。如需選擇區域的說明,請參閱選擇 Origin Shield AWS 的區域

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

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

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

AWS CloudFormation

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

下列範例顯示 YAML 格式的語法,適用於在美國西部 (奧勒岡) 區域 (OriginShield) 中啟用 us-west-2。如需選擇區域的說明,請參閱選擇 Origin 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 Origin

API

若要使用 AWS SDKs 或 AWS Command Line Interface () 搭配 CloudFront API 啟用 Origin Shield AWS CLI,請使用 OriginShield類型。在 OriginShield 中,指定 Origin 中的 DistributionConfig,。如需 OriginShield 類型的相關資訊,請參閱「Amazon CloudFront API 參考」中的下列資訊。

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

預估 Origin Shield 成本

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

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

GETHEAD請求的存留時間 (TTL) 設定少於 3600 秒,會被視為動態請求。此外,已停用快取的 GETHEAD請求也會被視為動態請求。

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

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

對於使用 HTTP 方法 GETHEAD和 的非動態請求OPTIONS,Origin Shield 有時是增量層。啟用 Origin Shield 時,您可以選擇 Origin Shield AWS 區域 的 。對於自然移至與 Origin Shield 相同區域中區域節點快取的請求,Origin Shield 不是增量層。您不會產生這些請求的 Origin Shield 費用。對於前往與 Origin Shield 不同區域中的區域節點快取,然後前往 Origin Shield 的請求,Origin Shield 是增量層。您會對這些請求累算 Origin Shield 費用。

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

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

如需每 10,000 個請求的詳細 Origin Shield 費用,請參閱 CloudFront 定價

Origin Shield 高可用性

Origin Shield 利用 CloudFront 區域節點快取功能。每個節點快取都建置在 AWS 區域中,使用至少三個可用區域搭配自動擴展的 Amazon EC2 執行個體機群。CloudFront 位置與 Origin Shield 的連線也會針對每項請求使用有效的錯誤追蹤,以便在主要的 Origin Shield 位置無法使用時,自動將請求路由到輔助的 Origin Shield 位置。

Origin Shield 與其他 CloudFront 功能如何互動

下列各節會說明 Origin Shield 與其他 CloudFront 功能如何互動。

Origin Shield 與d CloudFront 記錄日誌

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

來自 Origin Shield 的快取命中在 CloudFront 日誌的 OriginShieldHit 欄位中顯示為 x-edge-detailed-result-type。Origin Shield 利用 Amazon CloudFront 的區域節點快取。如果請求是從 CloudFront 節點路由到做為 Origin Shield 的區域節點快取,日誌會將其回報為 Hit,而不是回報為 OriginShieldHit

Origin Shield 和原始伺服器群組

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

Origin Shield 和 Lambda@Edge

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

當您將 Origin Shield 與 Lambda@Edge 搭配使用時,原始伺服器面向觸發程序 (原始伺服器請求和原始伺服器回應) 會在啟用 Origin Shield 的 AWS 區域中執行。如果主要 Origin Shield 位置無法使用,且 CloudFront 將請求路由到次要 Origin Shield 位置,則 Lambda@Edge 面向原始伺服器觸發也會移動以使用次要 Origin Shield 位置。

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