

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

# 使用 VPC 原始伺服器限制存取
<a name="private-content-vpc-origins"></a>

您可以使用 CloudFront 從虛擬私有雲端 (VPC) 私有子網路中託管的應用程式交付內容。您可以使用 Application Load Balancer (ALB)、Network Load Balancer (NLB) 和私有子網路中的 EC2 執行個體做為 VPC 原始伺服器。

以下是您可能想要使用 VPC 原始伺服器的一些原因：
+ **安全** – VPC 原始伺服器旨在透過將負載平衡器和 EC2 執行個體放置在私有子網路中，使 CloudFront 成為單一進入點，來增強應用程式的安全狀態。使用者請求會透過私有、安全的連線從 CloudFront 轉移到 VPC 原始伺服器，為您的應用程式提供額外的安全性。
+ **管理** – VPC 原始伺服器可減少 CloudFront 與原始伺服器之間安全連線所需的營運開銷。您可以將原始伺服器移至沒有公有存取權的私有子網路，而且您不需要實作存取控制清單 (ACL) 或其他機制來限制對原始伺服器的存取。如此一來，您就不必投資未差異化的開發工作，即可使用 CloudFront 保護您的 Web 應用程式。
+ **可擴展性和效能** – VPC 原始伺服器可協助您保護 Web 應用程式，騰出時間專注於擴展關鍵業務應用程式，同時透過 CloudFront 提高安全性和維護高效能和全球可擴展性。VPC 原始伺服器可簡化安全管理並降低操作複雜性，讓您可以使用 CloudFront 做為應用程式的單一進入點。

**提示**  
CloudFront 支援跨 共用 VPC 原始伺服器 AWS 帳戶，無論它們是否在您的組織中。您可以從 CloudFront 主控台共用 VPC 原始伺服器或使用 AWS Resource Access Manager (AWS RAM)。如需詳細資訊，請參閱[在 CloudFront 中使用共享的資源](sharing-resources.md)。

## 先決條件
<a name="vpc-origin-prerequisites"></a>

為 CloudFront 分佈建立 VPC 原始伺服器之前，您必須完成下列操作：

### VPC 組態
<a name="vpc-configuration"></a>

在 **VPC 原始伺服器支援的其中一個 中，在 Amazon VPC 上建立虛擬私有雲端 (VPC)**。 AWS 區域 如需有關建立 VPC 的資訊，請參閱《*Amazon VPC 使用者指南*》中的[建立 VPC 和其他 VPC 資源](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html#create-vpc-and-other-resources)。如需支援的區域的清單，請參閱 [AWS 區域 支援 VPC 原始伺服器](#vpc-origins-supported-regions)。

您的 VPC 必須包含下列項目：
+ **網際網路閘道** – 您需要將網際網路閘道新增至具有 VPC 原始資源的 VPC。需要網際網路閘道才能表示 VPC 可以從網際網路接收流量。網際網路閘道不會用於將流量路由到子網路內的原始伺服器，而且您不需要更新路由政策。
+ **具有至少一個可用 IPv4 位址的私有子網路** – CloudFront 會使用 CloudFront 在您使用 CloudFront 定義 VPC 原始伺服器資源後建立的服務受管彈性網路介面 (ENI)，路由到您的子網路。您的私有子網路中必須至少有一個可用的 IPv4 位址，以成功完成 ENI 建立程序。IPv4 位址可以是私有位址，而且無需額外費用。不支援 IPv6-only 子網路。

### 原始伺服器資源
<a name="origin-resources"></a>

在私有子網路中，啟動 Application Load Balancer、Network Load Balancer 或 EC2 執行個體以做為原始伺服器。您啟動的資源必須完全部署且處於作用中狀態，才能將其用於 VPC 原始伺服器。

**原始伺服器限制：**
+ Gateway Load Balancer 無法新增為原始伺服器
+ 雙堆疊 Network Load Balancer 無法新增為原始伺服器
+ 具有 TLS 接聽程式的網路負載平衡器無法新增為原始伺服器
+ 若要用作 VPC 原始伺服器，Network Load Balancer 必須連接安全群組

### 安全群組設定
<a name="security-group-configuration"></a>

您的 VPC 原始伺服器資源 (Application Load Balancer、Network Load Balancer 或 EC2 執行個體） 必須連接安全群組。當您建立 VPC 原始伺服器時，CloudFront 會自動建立命名模式為 的服務受管安全群組`CloudFront-VPCOrigins-Service-SG`。此安全群組完全由 管理 AWS，不應編輯。

若要允許來自 CloudFront 的流量到達 VPC 原始伺服器，請更新連接至原始資源 (ALB、NLB 或 EC2 執行個體） 的安全群組，以使用下列其中一種方法允許傳入流量：
+ **選項 1：**允許來自 CloudFront 受管字首清單的流量。如需詳細資訊，請參閱[使用 CloudFront 受管字首清單](LocationsOfEdgeServers.md#managed-prefix-list)。這也可以在建立 VPC 原始伺服器之前完成。
+ **選項 2：**允許來自 CloudFront 服務受管安全群組 () 的流量`CloudFront-VPCOrigins-Service-SG`。這只能在建立 VPC 原始伺服器並建立服務受管安全群組之後完成。此組態會進一步限制，因為它只會將流量限制在您的 CloudFront 分佈。

**重要**  
請勿建立名稱開頭為 的自有安全群組`CloudFront-VPCOrigins-Service-SG`。這是服務受管安全群組的 AWS 預留命名模式。如需詳細資訊，請參閱[建立安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)。

### 通訊協定和功能限制
<a name="protocol-feature-restrictions"></a>

VPC 原始伺服器不支援下列項目：
+ gRPC 流量
+ 使用 Lambda@Edge 的原始伺服器請求和原始伺服器回應觸發條件

## 建立 VPC 原始伺服器 (新分佈)
<a name="new-vpc-origin"></a>

下列程序說明如何在 CloudFront 主控台中為新的 CloudFront 分佈建立 VPC 原始伺服器。或者，您可以使用 [CreateVpcOrigin](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateVpcOrigin.html) 和 [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) API 操作搭配 AWS CLI 或 AWS SDK。

**為新的 CloudFront 分佈建立 VPC 原始伺服器**

1. 在 [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) 中開啟 CloudFront 主控台。

1. 選擇 **VPC 原始伺服器**、**建立 VPC 原始伺服器**。

1. 填妥必要的欄位。針對**原始伺服器 ARN**，選取 Application Load Balancer、Network Load Balancer 或 EC2 執行個體的 ARN。如果您沒有看到 ARN，您可以複製特定資源 ARN 並將其貼到這裡。

1. 選擇**建立 VPC 原始伺服器**。

1. 等待您的 VPC 原始伺服器狀態變更為**已部署**。此程序最多需要 15 分鐘的時間。

1. 選擇**分佈**、**建立分佈**。

1. 對於**原始伺服器網域**，請從下拉式清單中選取您的 VPC 原始伺服器資源。

   如果您的 VPC 原始伺服器是 EC2 執行個體，請將執行個體的**私有 IP DNS 名稱**複製並貼到**原始伺服器網域**欄位中。

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

## 建立 VPC 原始伺服器 (現有分佈)
<a name="existing-vpc-origin"></a>

下列程序說明如何在 CloudFront 主控台中為現有的 CloudFront 分佈建立 VPC 原始伺服器，這有助於確保應用程式的持續可用性。或者，您可以使用 [CreateVpcOrigin](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateVpcOrigin.html) 和 [UpdateDistributionWithStagingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistributionWithStagingConfig.html) API 操作搭配 AWS CLI 或 AWS SDK。

或者，您可以選擇將 VPC 原始伺服器新增至現有的分佈，而無需建立臨時分佈。

**為現有的 CloudFront 分佈建立 VPC 原始伺服器**

1. 在 [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) 中開啟 CloudFront 主控台。

1. 選擇 **VPC 原始伺服器**、**建立 VPC 原始伺服器**。

1. 填妥必要的欄位。針對**原始伺服器 ARN**，選取 Application Load Balancer、Network Load Balancer 或 EC2 執行個體的 ARN。如果您沒有看到 ARN，您可以複製特定資源 ARN 並將其貼到這裡。

1. 選擇**建立 VPC 原始伺服器**。

1. 等待您的 VPC 原始伺服器狀態變更為**已部署**。此程序最多需要 15 分鐘的時間。

1. 在導覽窗格中，選擇 **Distributions (分佈)**。

1. 選擇您分佈的 ID。

1. 在**一般**索引標籤的**持續部署**下，選擇**建立臨時分佈**。如需詳細資訊，請參閱[使用 CloudFront 持續部署，安全地測試 CDN 組態變更](continuous-deployment.md)。

1. 依照**建立臨時分佈**精靈中的步驟來建立臨時分佈。包括下列步驟：
   + 對於**原始伺服器**，選擇**建立原始伺服器**。
   + 對於**原始伺服器網域**，請從下拉式功能表中選取您的 VPC 原始伺服器資源。

     如果您的 VPC 原始伺服器是 EC2 執行個體，請將執行個體的**私有 IP DNS 名稱**複製並貼到**原始伺服器網域**欄位中。
   + 選擇 **Create Origin (建立原始伺服器)**。

1. 在您的臨時分佈中，測試 VPC 原始伺服器。

1. 將臨時分佈組態提升為主要分佈。如需詳細資訊，請參閱[提升臨時分佈組態](working-with-staging-distribution-continuous-deployment-policy.md#promote-staging-distribution-configuration)。

1. 將子網路設為私有，以移除對 VPC 原始伺服器的公開存取。執行此操作後，將無法透過網際網路探索 VPC 原始伺服器，但 CloudFront 仍然可以進行私有存取。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[將子網路與路由表建立關聯或取消關聯](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AssociateSubnet)。

## 更新 VPC 原始伺服器
<a name="update-vpc-origin"></a>

下列程序說明如何在 CloudFront 主控台中更新 CloudFront 分佈的 VPC 原始伺服器。或者，您可以使用 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) 和 [UpdateVpcOrigin](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateVpcOrigin.html) API 操作搭配 AWS CLI 或 AWS SDK。

**更新 CloudFront 分佈的現有 VPC 原始伺服器**

1. 在 [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) 中開啟 CloudFront 主控台。

1. 在導覽窗格中，選擇 **Distributions (分佈)**。

1. 選擇您分佈的 ID。

1. 選擇 **Behaviors (動作)** 索引標籤。

1. 請確定 VPC 原始伺服器不是快取行為的預設原始伺服器。

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

1. 選取您要更新的 VPC 原始伺服器，然後選擇**刪除**。這會取消 VPC 原始伺服器與分佈的關聯。重複步驟 2 至 7，以取消 VPC 原始伺服器與任何其他分佈的關聯。

1. 選擇 **VPC 原始伺服器**。

1. 選取 VPC 原始伺服器，然後選擇**編輯**。

1. 進行更新，然後選擇**更新 VPC 原始伺服器**。

1. 等待您的 VPC 原始伺服器狀態變更為**已部署**。此程序最多需要 15 分鐘的時間。

1. 在導覽窗格中，選擇 **Distributions (分佈)**。

1. 選擇您分佈的 ID。

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

1. 選擇 **Create Origin (建立原始伺服器)**。

1. 對於**原始伺服器網域**，請從下拉式功能表中選取您的 VPC 原始伺服器資源。

   如果您的 VPC 原始伺服器是 EC2 執行個體，請將執行個體的**私有 IP DNS 名稱**複製並貼到**原始伺服器網域**欄位中。

1. 選擇 **Create Origin (建立原始伺服器)**。這會再次將 VPC 原始伺服器與您的分佈建立關聯。重複步驟 12 至 17，將更新的 VPC 原始伺服器與任何其他分佈建立關聯。

## AWS 區域 支援 VPC 原始伺服器
<a name="vpc-origins-supported-regions"></a>

下列商業商品目前支援 VPC 原始伺服器 AWS 區域。會記下可用區域 (AZ) 例外狀況。

[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/private-content-vpc-origins.html)