

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

# 使用 Amazon CloudFront Origin Shield
<a name="origin-shield"></a>

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

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

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

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

使用 Origin Shield 會產生額外費用。如需詳細資訊，請參閱 [CloudFront 定價](https://aws.amazon.com/cloudfront/pricing/)。

**注意**  
gRPC 請求不支援 Origin Shield。如果支援 gRPC 的分佈已啟用 Origin Shield，gRPC 請求將繼續運作。不過請求將直接代理到 gRPC 原始伺服器，不會經過 Origin Shield。如需詳細資訊，請參閱[使用 gRPC 搭配 CloudFront 分佈](distribution-using-grpc.md)。

**Topics**
+ [Origin Shield 的使用案例](#origin-shield-use-cases)
+ [選擇 Origin Shield AWS 的區域](#choose-origin-shield-region)
+ [啟用 Origin Shield](#enable-origin-shield)
+ [預估 Origin Shield 成本](#origin-shield-costs)
+ [Origin Shield 高可用性](#origin-shield-high-availability)
+ [Origin Shield 與其他 CloudFront 功能如何互動](#origin-shield-and-other-features)

## Origin Shield 的使用案例
<a name="origin-shield-use-cases"></a>

CloudFront Origin Shield 對許多使用案例都很有幫助，包括：
+ 分佈在不同地理區域的檢視器
+ 為即時串流或即時映像處理提供即時封裝的原始伺服器
+ 具有容量或頻寬限制的內部部署原始伺服器
+ 使用多個內容交付網路 (CDN) 的工作負載

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

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

**Topics**
+ [不同地理區域的檢視器](#os-use-cases-global-viewers)
+ [多個 CDN](#os-use-cases-multi-cdn)

### 不同地理區域的檢視器
<a name="os-use-cases-global-viewers"></a>

使用 Amazon CloudFront，本質上會減少原始伺服器的負載，因為 CloudFront 可從快取提供的請求，不會前往原始伺服器。除了 CloudFront 的[節點全域網路](https://aws.amazon.com/cloudfront/features/#Amazon_CloudFront_Infrastructure)以外，[區域節點快取](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches)也可做為提供快取命中的中層快取層，並整合附近地理區域之檢視器的原始伺服器請求。檢視器請求會先路由到附近的 CloudFront 節點，如果未在該位置快取物件，則將請求傳送至區域節點快取。

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

**沒有 Origin Shield**

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

![\[沒有 CloudFront Origin Shield，原始伺服器可能會收到重複的請求。\]](http://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/images/origin-shield-without.png)


**具備 Origin Shield**

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

![\[有了 CloudFront Origin Shield，原始伺服器會收到較少的重複請求。\]](http://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/images/origin-shield-with.png)


### 多個 CDN
<a name="os-use-cases-multi-cdn"></a>

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

使用 Origin Shield 並將 CloudFront 發佈做為其他 CDN 的原始伺服器使用，您可以獲得下列好處：
+ 減少原始伺服器收到的冗餘請求，這有助於降低使用多個 CDN 的負面影響。
+ 跨 CDN 的常見[快取金鑰](controlling-the-cache-key.md) ，以及集中式管理原始伺服器面相的功能。
+ 改善的網路效能。來自其他 CDN 的網路流量會終止於附近的 CloudFront 節點，這可能會提供來自本機快取的命中。如果請求的物件不在節點快取中，原始伺服器的請求會維持在 CloudFront 網路上一路到 Origin Shield，這樣可為原始伺服器提供高輸送量和低延遲。如果請求的物件位於 Origin Shield 的快取中，可完全避免原始伺服器的請求。

**重要**  
如果您有興趣在多 CDN 架構中使用 Origin Shield，並享有折扣定價，[請聯絡我們](https://aws.amazon.com/contact-us/)或您的 AWS 銷售代表以取得詳細資訊。可能會收取額外費用。

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

**沒有 Origin Shield (多個 CDN)**

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

![\[圖表顯示原始伺服器如何接收重複請求，且每個請求都來自不同的 CDN。\]](http://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/images/origin-shield-without-multi-cdn.png)


**具備 Origin Shield (多個 CDN)**

使用 Origin Shield 並將 CloudFront 做為其他 CDN 的原始伺服器使用，有助於減少原始伺服器的負載，如下圖所示。

![\[圖表顯示 CloudFront Origin Shield 接收較少的重複請求。\]](http://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/images/origin-shield-with-multi-cdn.png)


## 選擇 Origin Shield AWS 的區域
<a name="choose-origin-shield-region"></a>

Amazon CloudFront 在 CloudFront 具有[區域節點快取](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches)的 AWS 區域中提供 Origin Shield。當您啟用 Origin Shield 時，您可以選擇 Origin Shield AWS 的區域。您應該為原始伺服器選擇最低延遲的 AWS 區域。您可以將 Origin Shield 與 AWS 區域中的原始伺服器以及不在其中的原始伺服器搭配使用 AWS。

### 對於 AWS 區域中的原始伺服器
<a name="choose-origin-shield-region-inside-aws"></a>

如果您的原始伺服器位於 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
<a name="choose-origin-shield-region-outside-aws"></a>

您可以將 Origin Shield 與內部部署的原始伺服器或不在 AWS 區域中的原始伺服器搭配使用。在此情況下，請在對您的原始伺服器延遲最低的 AWS 區域中啟用 Origin Shield。如果您不確定哪個 AWS 區域對您的原始伺服器延遲最低，您可以使用下列建議來協助您做出判斷。
+ 您可以參閱上表，根據原始伺服器的地理區域，了解哪個 AWS 區域對您的原始伺服器有最低延遲。
+ 您可以在地理位置接近原始伺服器的幾個不同 AWS 區域中啟動 Amazon EC2 執行個體，並使用 執行一些測試`ping`，以測量這些區域與原始伺服器之間的典型網路延遲。

## 啟用 Origin Shield
<a name="enable-origin-shield"></a>

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

您可以在 CloudFront 主控台中，透過 CloudFront API CloudFormation或 啟用 Origin Shield。

------
#### [ Console ]

**若要為現有的原始伺服器啟用 Origin Shield (主控台)**

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

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

1. 選擇 **Origins (原始伺服器)** 索引標籤。

1. 選擇要更新的原始伺服器，然後選擇 **Edit (編輯)**。

1. 對於 **Enable Origin Shield (啟用 Origin Shield)**，選擇 **Yes (是)**。

1. 對於 **Origin Shield Region (原始伺服器 Shield Region)**，選擇您要從中啟用 Shield Region 的 AWS 區域。如需選擇區域的說明，請參閱[選擇 Origin Shield AWS 的區域](#choose-origin-shield-region)。

1. 選擇**儲存變更**。

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

**為新的原始伺服器啟用 Origin Shield (主控台)**

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

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

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

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

   若要在新標準分佈中建立新的原始伺服器，請執行下列動作：

   1. 依照步驟在主控台中建立標準分佈。如需詳細資訊，請參閱[在主控台中建立 CloudFront 分佈](distribution-web-creating-console.md#create-console-distribution)。

   1. 在**設定**區段中選取**自訂設定**。繼續步驟 3。

1. 對於 **Enable Origin Shield (啟用 Origin Shield)**，選擇 **Yes (是)**。

1. 對於 **Origin Shield Region (原始伺服器 Shield Region)**，選擇您要從中啟用 Shield Region 的 AWS 區域。如需選擇區域的說明，請參閱[選擇 Origin Shield AWS 的區域](#choose-origin-shield-region)。

1. 請依照主控台中的步驟完成建立原始伺服器或分佈。

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

------
#### [ CloudFormation ]

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

下列範例顯示 YAML 格式的語法，適用於在美國西部 (奧勒岡) 區域 (`OriginShield`) 中啟用 `us-west-2`。如需選擇區域的說明，請參閱[選擇 Origin Shield AWS 的區域](#choose-origin-shield-region)。此範例僅顯示 `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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html)。

------
#### [ API ]

若要使用 AWS SDKs 或 AWS Command Line Interface () 搭配 CloudFront API 啟用 Origin Shield AWS CLI，請使用 `OriginShield`類型。在 `OriginShield` 中，指定 `Origin` 中的 `DistributionConfig`，。如需 `OriginShield` 類型的相關資訊，請參閱「Amazon CloudFront API 參考」**中的下列資訊。
+ [OriginShield](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_OriginShield.html) (類型)
+ [Origin](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_Origin.html) (類型)
+ [DistributionConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DistributionConfig.html) (類型)
+ [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) (操作)
+ [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) (操作)

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

------

## 預估 Origin Shield 成本
<a name="origin-shield-costs"></a>

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

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

若 `GET` 和 `HEAD` 請求的存留時間 (TTL) 設定少於 3600 秒，則視為動態請求。此外已停用快取的 `GET` 和 `HEAD` 請求也會視為動態請求。

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

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

對於使用 HTTP 方法 `GET`、`HEAD` 和 `OPTIONS` 的非動態請求，Origin Shield 有時是增量層。啟用 Origin Shield 時，您可以選擇 Origin Shield AWS 區域 的 。若請求是自然移至與 Origin Shield 相同區域中的[區域邊緣快取](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches)，則 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 定價](https://aws.amazon.com/cloudfront/pricing/)。

## Origin Shield 高可用性
<a name="origin-shield-high-availability"></a>

Origin Shield 利用 CloudFront 的[區域邊緣快取](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches)功能。每個邊緣快取都建置在 AWS 區域中，使用至少三個[可用區域](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)搭配自動擴展 Amazon EC2 執行個體的機群。CloudFront 位置與 Origin Shield 的連線也會針對每項請求使用有效的錯誤追蹤，以便在主要的 Origin Shield 位置無法使用時，自動將請求路由到輔助的 Origin Shield 位置。

## Origin Shield 與其他 CloudFront 功能如何互動
<a name="origin-shield-and-other-features"></a>

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

### Origin Shield 與d CloudFront 記錄日誌
<a name="origin-shield-logging"></a>

若要查看 Origin Shield 何時處理請求，您必須啟用下列其中一項：
+ [CloudFront 標準日誌 (存取日誌)](AccessLogs.md)。標準日誌是免費提供的。
+ [CloudFront 即時存取日誌](real-time-logs.md)。使用即時存取日誌會產生額外費用。請參閱 [Amazon CloudFront 定價](https://aws.amazon.com/cloudfront/pricing/)。

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

### Origin Shield 和原始伺服器群組
<a name="origin-shield-and-origin-group"></a>

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

### Origin Shield 和 Lambda@Edge
<a name="origin-shield-and-lambda-at-edge"></a>

Origin Shield 不會影響 [Lambda@Edge](lambda-at-the-edge.md) 函數的功能，但它會影響這些函數執行所在的 AWS 區域。

當您將 Origin Shield 與 Lambda@Edge 搭配使用時，[原始伺服器面向觸發程序](lambda-cloudfront-trigger-events.md) （原始伺服器請求和原始伺服器回應） 會在啟用 Origin Shield 的 AWS 區域中執行。如果主要 Origin Shield 位置無法使用，且 CloudFront 將請求路由到次要 Origin Shield 位置，則 Lambda@Edge 面向原始伺服器的觸發條件也會切換為使用次要 Origin Shield 位置。

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