

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

# 搭配 Amazon VPC 使用 Elastic Beanstalk
<a name="vpc"></a>

本主題說明搭配 Elastic Beanstalk 使用 VPC 端點的好處，以及您可以實作的不同組態類型。

您可以使用 [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) 為您的 Elastic Beanstalk 應用程式和相關 AWS 資源建立安全網路。建立您的環境時，您可以選擇哪些 VPC、子網路和安全群組是用於您的應用程式執行個體和負載平衡器。您可以使用任何 VPC 組態，只要符合以下需求即可。

**VPC 要求**
+ **網際網路存取** ‒ 執行個體可透過以下其中一種方法存取網際網路：
  + **公有子網路** ‒ 執行個體具備公有 IP 地址，並使用網際網路閘道存取網際網路。
  + **私有子網路** ‒ 執行個體使用 NAT 裝置存取網際網路。
**注意**  
如果您將 VPC 中的 [VPC 端點](vpc-vpce.md)設定為連線到 `elasticbeanstalk` 和 `elasticbeanstalk-health` 服務，則網際網路存取是選擇性的，而且只有在應用程式特別需要時才需要。如果沒有 VPC 端點，您的 VPC 必須能夠存取網際網路。  
Elastic Beanstalk 為您設定的預設 VPC 提供網際網路存取。

  Elastic Beanstalk 不支援使用 `HTTPS_PROXY` 等代理設定來設定 Web 代理。
+ **NTP** ‒ 您 Elastic Beanstalk 環境中的執行個體會使用網路時間協定 (NTP) 同步系統時鐘。若執行個體上無法於 UDP 連接埠 123 通訊，時鐘可能會無法同步，並於 Elastic Beanstalk 運作狀態報告出現問題。請確認您的 VPC 安全群組和網路 ACL，允許連接埠 123 上的 UDP 流量出入，以避免這些問題。

[elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/) 儲存庫提供 CloudFormation 範本，可用來建立 VPC 以搭配 Elastic Beanstalk 環境使用。

**使用 CloudFormation 範本建立資源**

1. 複製範本儲存庫，或是使用 [README](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/cfn-templates/README.md) 中的連結下載範本。

1. 開啟 [CloudFormation 主控台](https://console.aws.amazon.com/cloudformation/home)。

1. 選擇**建立堆疊**。

1. 選擇 **Upload a template to Amazon S3 (上傳範本到 Amazon S3)**。

1. 選擇 **Upload file (上傳檔案)** 並從您的本機機器上傳範本檔案。

1. 選擇 **Next (下一步)** 並依照說明操作來使用範本中的資源建立堆疊。

堆疊建立完成後，檢查 **Outputs (輸出)** 索引標籤，尋找 VPC ID 和子網路 ID。在新的環境精靈[網路組態類別](environments-create-wizard.md#environments-create-wizard-network)中使用這些設定 VPC。

**Topics**
+ [

## 公有 VPC
](#services-vpc-public)
+ [

## 公有/私有 VPC
](#services-vpc-privatepublic)
+ [

## 私有 VPC
](#services-vpc-private)
+ [

# 範例：透過堡壘主機啟動 VPC 內的 Elastic Beanstalk 應用程式
](vpc-bastion-host.md)
+ [

# 範例：透過 Amazon RDS 在 VPC 中啟動 Elastic Beanstalk
](vpc-rds.md)
+ [

# 搭配 VPC 端點使用 Elastic Beanstalk
](vpc-vpce.md)
+ [

# 使用端點政策搭配 VPC 端點來控制存取
](vpc-vpce.policy.md)

## 公有 VPC
<a name="services-vpc-public"></a>

**CloudFormation 範本** – [vpc-public.yaml](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/cfn-templates/vpc-public.yaml)

**設定 (負載平衡)**
+ **負載平衡器可見度** ‒ 公有
+ **負載平衡器子網路** ‒ 兩個公有子網路
+ **執行個體公有 IP** ‒ 已啟用
+ **執行個體子網路** ‒ 兩個公有子網路
+ **執行個體安全群組** ‒ 新增預設安全群組

**設定 (單一執行個體)**
+ **執行個體子網路** ‒ 其中一個公有子網路
+ **執行個體安全群組** ‒ 新增預設安全群組

基本*僅公有* VPC 版面配置包含一或多個公有子網路、網際網路閘道和預設的安全群組，讓 VPC 中各資源之間存在流量。當您在 VPC 中建立環境時，Elastic Beanstalk 會根據環境類型建立額外的資源。

**VPC 資源**
+ **單一執行個體** &endash; Elastic Beanstalk 會針對應用程式執行個體建立安全群組，允許來自連接埠 80 的網際網路流量，並為此執行個體指派彈性 IP，為其指定一個公有 IP 地址。環境的網域名稱解析成執行個體的公有 IP 地址。
+ **負載平衡** &endash; Elastic Beanstalk 為負載平衡器建立安全群組，允許來自連接埠 80 的網際網路流量，並會為應用程式執行個體建立安全群組，允許來自負載平衡器安全群組的流量。環境的網域名稱解析成負載平衡器的網域名稱。

這與 Elastic Beanstalk 在您使用預設 VPC 時管理聯網的方式相似。公有子網路中的安全取決於負載平衡器以及 Elastic Beanstalk 建立的執行個體安全群組。這是最便宜的配置，因為它不需要 NAT 閘道。

## 公有/私有 VPC
<a name="services-vpc-privatepublic"></a>

**CloudFormation 範本** – [vpc-privatepublic.yaml](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/cfn-templates/vpc-privatepublic.yaml)

**設定 (負載平衡)**
+ **負載平衡器可見度** ‒ 公有
+ **負載平衡器子網路** ‒ 兩個公有子網路
+ **執行個體公有 IP** ‒ 已停用
+ **執行個體子網路** ‒ 兩個私有子網路
+ **執行個體安全群組** ‒ 新增預設安全群組

如需額外的安全性，可新增私有子網路到您的 VPC 以建立*公有-私有*配置。此配置需要公有子網路中的負載平衡器和 NAT 閘道，讓您執行應用程式執行個體、資料庫和私有子網路中的任何其他資源。私有子網路中的執行個體只能透過負載平衡器和 NAT 閘道與網際網路通訊。

## 私有 VPC
<a name="services-vpc-private"></a>

**CloudFormation 範本** – [vpc-private.yaml](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/cfn-templates/vpc-private.yaml)

**設定 (負載平衡)**
+ **負載平衡器可見度** ‒ 私有
+ **負載平衡器子網路** ‒ 兩個私有子網路
+ **執行個體公有 IP** ‒ 已停用
+ **執行個體子網路** ‒ 兩個私有子網路
+ **執行個體安全群組** ‒ 新增預設安全群組

對於不應被網際網路存取的內部應用程式，您可以在私有子網路執行所有項目，並設定負載平衡器為朝向內部 (變更 **Load balancer visibility (負載平衡器可見度)** 至 **Internal (內部)**)。此範本會建立不含公有子網路和網際網路閘道的 VPC。使用應用程式的這個配置，其只能從相同的 VPC 或連接的 VPN 存取。

### 在私有 VPC 中執行 Elastic Beanstalk 環境
<a name="services-vpc-private-beanstalk"></a>

當您在私有 VPC 中建立 Elastic Beanstalk 環境時，環境無法存取網際網路。您的應用程式可能需要存取 Elastic Beanstalk 服務或其他服務。您的環境可能會使用增強型運作狀態報告，在此情況下，環境執行個體會將運作狀態資訊傳送至增強型運作狀態服務。而環境執行個體上的 Elastic Beanstalk 程式碼會將流量傳送至其他 AWS 服務，並將其他流量傳送至非AWS 端點 （例如，下載應用程式的相依性套件）。以下是在此情況下，您可能需要採取的一些步驟，以確保您的環境正常運作。
+ 「為 Elastic Beanstalk 設定 VPC 端點」**‒ Elastic Beanstalk 及其增強型運作狀態服務支援 VPC 端點，以確保這些服務的流量保持在 Amazon 網路中，且不需要網際網路存取。如需詳細資訊，請參閱[搭配 VPC 端點使用 Elastic Beanstalk](vpc-vpce.md)。
+ *為其他服務設定 VPC 端點* – Elastic Beanstalk 執行個體會代表您將流量傳送至數個 AWS 其他服務：Amazon Simple Storage Service (Amazon S3) AWS CloudFormation、Amazon Simple Queue Service (Amazon SQS) 和 Amazon CloudWatch Logs。您也必須為這些服務設定 VPC 端點。如需 VPC 端點的詳細資訊，包括每個服務連結，請參閱《*Amazon* [VPC 使用者指南》中的 VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)。
**注意**  
有些 AWS 服務，包括 Elastic Beanstalk，支援有限數量 AWS 區域中的 VPC 端點。當您設計私有 VPC 解決方案時，請確認 Elastic Beanstalk 和此處提及的其他相依服務支援您選擇的 AWS 區域中的 VPC 端點。
+ 「提供私有 Docker 影像」**‒ 在 [Docker](create_deploy_docker.md) 環境中，環境執行個體上的程式碼可能會嘗試在建立環境期間，從網際網路提取已設定的 Docker 影像並失敗。如要避免此失敗，請在您的環境上[建置自訂 Docker 影像](single-container-docker-configuration.md#single-container-docker-configuration.dockerfile)，或是使用存放在 [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/) 中的 Docker 影像，然後[為 Amazon ECS 服務設定 VPC 端點](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html)。
+ *啟用 DNS 名稱* – 環境執行個體上的 Elastic Beanstalk 程式碼會使用其公有端點將流量傳送至所有 AWS 服務。若要確保此流量經過，請在設定所有界面 VPC 端點時選擇 **Enable DNS name (啟用 DNS 名稱)** 選項。這會在 VPC 中新增 DNS 項目，此項目會將公有服務端點映射至界面 VPC 端點。
**重要**  
如果您的 VPC 並非私有且具有公有網際網路存取權，而且任何 VPC 端點的 **Enable DNS name (啟用 DNS 名稱)** 已停用，則個別服務的流量會透過公用網際網路傳輸。這可能不是您想要的。使用私有 VPC 很容易偵測到此問題，因為它可以防止此流量發生，並且您會收到錯誤。但是，對於公有面向的 VPC，則不會有任何指示。
+ 「包含應用程式相依性」**‒ 如果您的應用程式具有相依性 (例如語言執行時間套件)，則其可能會在環境建立期間嘗試從網際網路下載進行安裝並失敗。為了避免這種失敗，請在應用程式的原始碼套件中包含所有相依性套件。
+ 「使用目前的平台版本」**‒ 請確定您的環境使用 2020 年 2 月 24 日以後發行的平台版本。具體來說，使用在這兩個更新之一或之後發行的平台版本：[Linux Update 2020-02-28](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2020-02-28-linux.html)、[Windows Update 2020-02-24](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2020-02-24-windows.html)。
**注意**  
需要更新平台版本的原因是，舊版本有一個可能阻止由 **Enable DNS name (啟用 DNS 名稱)** 選項所建立的 DNS 項目為 Amazon SQS 正常運作的問題。

# 範例：透過堡壘主機啟動 VPC 內的 Elastic Beanstalk 應用程式
<a name="vpc-bastion-host"></a>

本節說明如何使用堡壘主機在 VPC 內部署 Elastic Beanstalk 應用程式，以及實作此拓撲的原因。

如果您的 Amazon EC2 執行個體位於私有子網路內，將無法從遠端進行連線。欲連接至您的執行個體，您可在公有子網路內設定堡壘伺服器做為代理。例如，您可於公有子網路內設定 SSH 連接埠轉寄站或 RDP 閘道，代理從您自己的網路流向資料庫伺服器的流量。本章節的範例說明如何透過私有和公有子網路建立 VPC。執行個體位於私有子網路內，而堡壘主機、NAT 閘道和負載平衡器則位於公有子網路內。您的基礎設施將與下圖類似。

![\[具有堡壘主機的 Elastic Beanstalk 和 VPC 拓撲圖表。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vpc-bastion-topo-ngw.png)


如要使用堡壘主機在 VPC 內部部署 Elastic Beanstalk 應用程式，請完成下列小節所述的步驟。

**Topics**
+ [

## 建立包含公有和私有子網路的 VPC
](#vpc-bastion-host-create)
+ [

## 建立並設定堡壘主機安全群組
](#vpc-bastion-create-host-sg)
+ [

## 更新執行個體安全群組
](#vpc-bastion-update-instance-sg)
+ [

## 建立堡壘主機
](#vpc-bastion-host-launch)

## 建立包含公有和私有子網路的 VPC
<a name="vpc-bastion-host-create"></a>

在 [公有/私有 VPC](vpc.md#services-vpc-privatepublic) 完成所有程序。部署應用程式時，您必須為執行個體指定 Amazon EC2 金鑰對，以便從遠端連線。如需指定執行個體金鑰對的詳細資訊，請參閱 [您 Elastic Beanstalk 環境的 Amazon EC2 執行個體](using-features.managing.ec2.md)。

## 建立並設定堡壘主機安全群組
<a name="vpc-bastion-create-host-sg"></a>

建立堡壘主機的安全群組，並新增規則允許來自網際網路的傳入 SSH 流量，以及傳出至內含 Amazon EC2 執行個體私有子網路的 SSH 流量。

**建立堡壘主機安全群組**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Security Groups** (安全群組)。

1. 選擇 **Create Security Group** (建立安全群組)。

1. 在 **Create Security Group (建立安全群組)** 對話方塊中，輸入如下內容並選擇 **Yes, Create (是，建立)**。  
**Name tag (名稱標籤)** (選用)  
輸入安全群組的名稱標籤。  
**Group name** (群組名稱)  
輸入安全群組的名稱。  
**Description**  
輸入安全群組的描述。  
**VPC**  
選取您的 VPC。

   安全群組便會建立，並出現在 **Security Groups (安全群組)** 頁面上。請注意其會有 ID (例如：`sg-xxxxxxxx`)。您可能必須按一下頁面右上角的 **Show/Hide (顯示/隱藏)** 來開啟 **Group ID (群組 ID)** 資料行。

**欲設定堡壘主機安全群組**

1. 在安全群組清單中，選取您剛為堡壘主機建立的安全群組核取方塊。

1. 在 **Inbound Rules (傳入規則)** 標籤上，選擇 **Edit (編輯)**。

1. 視需要選擇 **Add another rule (新增其他規則)**。

1. 若您的防禦主機為 Linux 執行個體，在 **Type (類型)** 底下選取 **SSH (SSH)**。

   若您的防禦主機為 Windows 執行個體，在 **Type (類型)** 底下選取 **RDP (RDP)**。

1. 在 **Source (來源)** 欄位輸入所需來源 CIDR 範圍，然後選擇 **Save (儲存)**。  
![\[防禦主機安全群組\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/vpc-bh-sg-inbound.png)

1. 在 **Outbound Rules (傳出規則)** 索引標籤上，選擇 **Edit (編輯)**。

1. 視需要選擇 **Add another rule (新增其他規則)**。

1. 在 **Type (類型)** 下，選取您指定類型的傳入規則。

1. 在 **Source (來源)** 欄位中，輸入 VPC 私有子網路中主機子網路的 CIDR 範圍。

   尋找：

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 在導覽窗格中，選擇 **Subnets** (子網)。

   1. 請注意，每個 **Availability Zone (可用區域)** 在 **IPv4 CIDR (IPv4 CIDR)** 下的值，其中有您希望防禦主機橋接的主機。
**注意**  
如果您在多個可用區域擁有主機，請針對這些可用區域的每一個建立傳出規則。  
![\[VPC 子網路\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/vpc-subnets.png)

1. 選擇**儲存**。

## 更新執行個體安全群組
<a name="vpc-bastion-update-instance-sg"></a>

您的執行個體安全群組預設不允許傳入流量。Elastic Beanstalk 會修改執行個體的預設群組以允許 SSH 流量，但如果您的執行個體為 Windows 執行個體，則必須自行修改自訂執行個體的安全群組，以允許 RDP 流量。

**欲更新 RDP 執行個體安全群組**

1. 在安全群組清單中，選取執行個體安全群組的核取方塊。

1. 在 **Inbound (傳入)** 標籤上，選擇 **Edit (編輯)**。

1. 視需要選擇 **Add another rule (新增其他規則)**。

1. 輸入下列值，然後選擇 **Save (儲存)**。  
**類型**  
`RDP`  
**通訊協定**  
`TCP`  
**連接埠範圍**  
`3389`  
**來源**  
輸入防禦主機安全群組的 ID (如 `sg-8a6f71e8`)，並選擇 **Save (儲存)**。

## 建立堡壘主機
<a name="vpc-bastion-host-launch"></a>

如要建立堡壘主機，您可以在您的公有子網路中啟動將做為堡壘主機的 Amazon EC2 執行個體。

如需在私有子網路中為 Windows 執行個體設定堡壘主機的詳細資訊，請參閱[使用堡壘伺服器控制 EC2 執行個體的網路存取](https://aws.amazon.com/blogs/security/controlling-network-access-to-ec2-instances-using-a-bastion-server/)。

如需在私有子網路中為 Linux 執行個體設定堡壘主機的詳細資訊，請參閱[安全連線至在私有 Amazon VPC 內執行的 Linux 執行個體](https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/)。

# 範例：透過 Amazon RDS 在 VPC 中啟動 Elastic Beanstalk
<a name="vpc-rds"></a>

本節會逐步引導您完成任務，使用 NAT 閘道於 VPC 中透過 Amazon RDS 部署 Elastic Beanstalk 應用程式。

您的基礎設施將與下圖類似。

![\[使用 Amazon RDS 的 Elastic Beanstalk 和 VPC 拓撲圖表。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vpc-rds-topo-ngw.png)


**注意**  
若您尚未搭配應用程式使用資料庫執行個體，請嘗試[將資料庫執行個體新增至測試環境](using-features.managing.db.md)，然後[連線至外部資料庫執行個體](AWSHowTo.RDS.md)，之後再將 VPC 組態新增至組合。

## 建立包含公有和私有子網路的 VPC
<a name="vpc-rds-create"></a>

您可以使用 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc/)來建立 VPC。

**建立 VPC**

1. 請登入 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc/)。

1. 在導覽窗格中，選擇 **VPC dashboard (VPC 儀表板)**。然後選擇 **Create VPC (建立 VPC)**。

1. 選擇 **VPC with Public and Private Subnets (具公有及私有子網路的 VPC)**、然後選擇 **Select (選取)**。  
![\[選擇 VPC with Public and Private Subnets (具有公有及私有子網路的 VPC)，然後選擇 Select (選取)。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/Case2_Wizard_Page2.png)

1. 您的 Elastic Load Balancing 負載平衡器及您的 Amazon EC2 執行個體必須在同一個可用區域中，才能互相通訊。從各 **Availability Zone (可用區域)** 清單中選擇同一個可用區域。  
![\[為公有及私有子網路選擇相同的可用區域。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/Case2_Wizard_Confirmation2.png)

1. 為您的 NAT 閘道選擇彈性 IP 地址。

1. 選擇**建立 VPC**。

   精靈便會開始建立您的 VPC、子網路及網際網路閘道。同時它也會更新主路由表及建立自訂路由表。最後，精靈會在公有子網路中建立 NAT 閘道。
**注意**  
您可以選擇在公有子網路中啟動 NAT 執行個體，而非 NAT 閘道。如需詳細資訊，請參閱《Amazon [VPC 使用者指南》中的案例 2：具有公有和私有子網路 (NAT)](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html) 的 VPC。 **

1. 在 VPC 成功建立後，您便會取得 VPC ID。您在下一個步驟中需要使用到此數值。若要檢視您的 VPC ID，請在 ** VPCs** [主控台的左側窗格中選擇您的 VPC](https://console.aws.amazon.com/vpc/)。  
![\[Amazon VPC 主控台會顯示您的 VPC ID。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vpc-id.png)

## 建立資料庫子網路群組
<a name="vpc-rds-subnet"></a>

VPC 的資料庫子網路群組是子網路的集合 (通常為私有)，可為您的後端 RDS 資料庫執行個體指定。每個資料庫子網路群組在特定 AWS 區域中的每個可用區域應至少有一個子網路。若要進一步了解，請參閱[在您的 VPC 中建立子網路](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet)。

**建立資料庫子網路群組**

1. 開啟 [Amazon RDS 主控台](https://console.aws.amazon.com/rds/)。

1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。

1. 選擇 **Create DB Subnet Group** (建立資料庫子網路群組)。

1. 選擇 **Name (名稱)**，然後輸入您資料庫子網路群組的名稱。

1. 選擇 **Description (描述)**，然後說明您的資料庫子網路群組。

1. 對於 **VPC (VPC)**，選擇先前建立的 VPC 的 ID。

1. 在 **Add subnets (新增子網路)** 中，選擇 **Add all the subnets related to this VPC (新增與此 VPC 相關的所有子網路)**。  
![\[新增所有與您的 VPC 相關的子網路。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vpc-rds-addsubnets.png)

1. 完成時，選擇 **Create ** (建立映像)。

   您新的資料庫子網路群組會顯示在 Amazon RDS 主控台的子網路群組清單中。您可加以選擇，以在頁面底部的詳細資訊窗格顯示詳細資訊，例如與此群組相關聯的所有子網路。

## 部署到 Elastic Beanstalk
<a name="vpc-rds-create-env"></a>

在您設定完 VPC 之後，您便可以在其中建立您的環境，並將您的應用程式部署到 Elastic Beanstalk。您可以使用 Elastic Beanstalk 主控台執行此操作，也可以使用 AWS 工具組 AWS CLI、EB CLI 或 Elastic Beanstalk API。若您使用 Elastic Beanstalk 主控台，只需要上傳您的 `.war` 或 `.zip` 檔案，並在精靈中選取 VPC 設定即可。Elastic Beanstalk 接著會在您的 VPC 中建立環境，並部署您的應用程式。或者，您可以使用 AWS 工具組 AWS CLI、EB CLI 或 Elastic Beanstalk API 來部署應用程式。若要執行此作業，您需要在組態檔中定義您的 VPC 選項設定，並與您的來源套件組合一同部署此檔案。本主題提供同時兩種方法的說明。

### 使用 Elastic Beanstalk 主控台部署
<a name="vpc-rds-new-console"></a>

Elastic Beanstalk 主控台會帶您逐步在 VPC 內建立您的新環境。您需要提供 `.war` 檔案 (適用於 Java 應用程式) 或 `.zip` 檔案 (適用於所有其他應用程式)。在 Elastic Beanstalk 環境精靈的 **VPC Configuration (VPC 組態)** 頁面上，您必須選取下列選項：

**VPC**  
選取您的 VPC。

**VPC 安全群組**  
選取您在上方說明中建立的執行個體安全群組。

**ELB visibility (ELB 可見性)**  
若您的負載平衡器需可公開使用，請選取 `External`；若您的負載平衡器僅需可在您的 VPC 中使用，請選取 `Internal`。

選取您負載平衡器及 EC2 執行個體的子網路。請確認您已為您的負載平衡器選取公有子網路，並為您的 Amazon EC2 執行個體選取了私有子網路。根據預設，VPC 建立精靈會在 `10.0.0.0/24` 中建立公有子網路，並在 `10.0.1.0/24` 中建立私有子網路。

您可以在 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc/)中選擇**子網路**，以檢視子網路 IDs。

![\[您 VPC 的子網路 ID\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vpc-subnets.png)


### 使用 AWS 工具組 AWS CLI、EB CLI 或 API 部署
<a name="vpc-rds-new-options"></a>

使用 AWS 工具組 AWS CLI、EB CLI 或 API 將應用程式部署至 Elastic Beanstalk 時，您可以在檔案中指定 VPC 選項設定，並將其與原始碼套件一起部署。如需詳細資訊，請參閱[使用組態檔案 (`.ebextensions`) 來進行進階的環境自訂](ebextensions.md)。

更新選項設定時，您至少需要指定下列項目：
+ **VPCId** ‒ 內含 VPC 的 ID。
+ **Subnets (子網路)** ‒ 內含 Auto Scaling 群組子網路的 ID。此範例為私有子網路的 ID。
+ **ELBSubnets** ‒ 內含負載平衡器的子網路 ID。此範例為公有子網路的 ID。
+ **SecurityGroups** ‒ 內含安全群組的 ID。
+ **DBSubnets** ‒ 內含資料庫子網路的 ID。
**注意**  
使用資料庫子網路時，您需要在 VPC 中建立其他子網路，以涵蓋 AWS 區域中的所有可用區域。

您亦可選擇指定下列資訊：
+ **ELBScheme** ‒ 如要在您的 VPC 內部建立內部負載平衡器，讓您的 Elastic Beanstalk 應用程式無法從 VPC 外部存取，請指定 `internal`。

下列範例是在 VPC 中部署 Elastic Beanstalk 應用程式時，您可以使用的選項設定。如需 VPC 選項設定 (包括指定範例、預設值和有效值) 的詳細資訊，請參閱[組態選項](command-options.md)中的 **aws:ec2:vpc** 命名空間表格。

```
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: EC2KeyName
    value: ec2keypair
    
  - namespace: aws:ec2:vpc
    option_name: VPCId
    value: vpc-170647c
    
  - namespace: aws:ec2:vpc
    option_name: Subnets
    value: subnet-4f195024
    
  - namespace: aws:ec2:vpc
    option_name: ELBSubnets
    value: subnet-fe064f95
    
  - namespace: aws:ec2:vpc
    option_name: DBSubnets
    value: subnet-fg148g78
    
  - namespace: aws:autoscaling:launchconfiguration
    option_name: InstanceType
    value: m1.small
    
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: sg-7f1ef110
```

**注意**  
使用資料庫子網路時，請確定您的 VPC 中有子網路，以涵蓋 AWS 區域中的所有可用區域。

# 搭配 VPC 端點使用 Elastic Beanstalk
<a name="vpc-vpce"></a>

本主題說明 VPC 端點可以為您的 Elastic Beanstalk 應用程式提供的優勢。它還提供建立 Elastic Beanstalk 服務介面 VPC 端點的說明。

VPC 端點可讓您將 VPC 私下連線至支援的 AWS 服務和採用 技術的 VPC 端點服務 AWS PrivateLink，而不需要網際網路閘道、NAT 裝置、VPN 連接或 Direct Connect 連線。

VPC 中的執行個體不需要公有 IP 地址，即可與服務中的資源通訊。VPC 與另一個服務之間的流量都會保持在 Amazon 網路的範圍內。如需 VPC 端點的完整資訊，請參閱《*Amazon* [VPC 使用者指南》中的 VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)。

AWS Elastic Beanstalk 支援 AWS PrivateLink，可提供 Elastic Beanstalk 服務的私有連線，並消除公有網際網路的流量暴露。若要讓您的應用程式使用 將請求傳送至 Elastic Beanstalk AWS PrivateLink，您可以設定稱為*介面 VPC 端點 （介面端點） 的 VPC 端點*類型。如需詳細資訊，請參閱*《Amazon VPC 使用者指南》*中的[界面 VPC 端點 (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)。

**注意**  
Elastic Beanstalk 在有限數量的 中支援 AWS PrivateLink 和界面 VPC 端點 AWS 區域。我們正在努力在不久 AWS 區域 的將來將支援擴展到更多。

## IPv6 支援雙堆疊組態
<a name="vpc-vpce.ipv6"></a>

Elastic Beanstalk 支援透過 IPv4 和 IPv6 傳入的流量。本節說明同時支援 IPv4 和 IPv6 的公有端點，並說明如何設定 Elastic Beanstalk VPC 端點以支援雙堆疊流量。

**公有端點**  
Elastic Beanstalk 服務有兩個端點集，其中包含較舊的 IPv4 端點和具有雙堆疊功能的較新端點。兩組端點都遵循 AWS 命名標準：
+ **IPv4 **端點使用網域 `amazonaws.com` – 一般服務端點的格式： `elasticbeanstalk.region.amazonaws.com`
+ **雙堆疊**端點使用網域 `api.aws` – 一般服務端點的格式： `elasticbeanstalk.region.api.aws`

*服務運作*狀態和 *FIPS* 的端點具有不同的主機名稱，但它們遵循相同的網域名稱模式。如需端點清單，請參閱《》中的 [Elastic Beanstalk 服務端點](https://docs.aws.amazon.com//general/latest/gr/elasticbeanstalk.html#elasticbeanstalk_region)*Amazon Web Services 一般參考*。

**對 Elastic Beanstalk 的請求**  
當您使用 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk)或 [AWS SDK](https://aws.amazon.com//developer/tools/) 將請求傳送至 Elastic Beanstalk 服務時，您可以指定 IPv4 端點或雙堆疊端點。如果未指定端點 URL， AWS CLI 和 AWS SDK 預設會使用IPv4-only 的端點。

下列範例示範 AWS CLI 傳送請求到雙堆疊端點：

**Example**  

```
aws elasticbeanstalk list-available-solution-stacks \
    --endpoint-url "https://elasticbeanstalk.us-east-1.api.aws"
```

下列範例示範 AWS Python SDK 傳送請求到雙堆疊端點：

**Example**  

```
import boto3

dual_stack_eb_client = boto3.client(
    service_name='elasticbeanstalk',
    region_name='us-east-1',
    endpoint_url='https://elasticbeanstalk.us-east-1.api.aws';
)

print(dual_stack_eb_client.list_available_solution_stacks())
```

**雙堆疊 IPs的 VPC 端點**  
若要設定 Elastic Beanstalk VPC 端點以支援雙堆疊流量，請為 VPC 端點的 **IP 地址類型**參數指定**雙堆疊**。您可以透過 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk)、 [AWS SDK](https://aws.amazon.com//developer/tools/) 或 AWS PrivateLink 主控台指定此欄位。如需在 AWS PrivateLink 主控台中執行此操作的說明，請參閱《 *AWS PrivateLink 指南*》中的[建立 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

**注意**  
您必須將 VPC 端點的 **IP 地址類型**指定為 **IPv4** 或**雙堆疊**。目前 Elastic Beanstalk VPC 端點不支援 **IPv6** 的 **IP 地址類型**，這表示IPv6-only。**雙堆疊**選項允許 IPv4 和 IPv6 網際網路通訊協定。

下列範例示範如何使用 建立雙堆疊 VPC 端點 AWS CLI：

**Example**  

```
aws ec2 create-vpc-endpoint \
    --vpc-id "vpc-example"
    --service-name "com.amazonaws.us-east-1.elasticbeanstalk"
    --ip-address-type "dualstack"
```

## 設定 Elastic Beanstalk 的 VPC 端點
<a name="vpc-vpce.eb"></a>

如要在您的 VPC 中建立 Elastic Beanstalk 服務的 VPC 端點，請遵循[建立界面端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint)程序。
+ 對於 **Service Name (服務名稱)**，請選擇 **com.amazonaws.*region*.elasticbeanstalk**。
+ 針對 **IP 地址類型**，選擇 **IPv4** 或 **Dualstack**。目前 Elastic Beanstalk VPC 端點不支援 **IPv6** 的 **IP 地址類型**，這表示IPv6-only。**Dualstack** 選項允許 IPv4 和 IPv6 網際網路通訊協定。

如果您的 VPC 已設定公有網際網路存取，您的應用程式仍然可以使用 `elasticbeanstalk.region.amazonaws.com`或`elasticbeanstalk.region.api.aws`公有端點透過網際網路存取 Elastic Beanstalk。您可以確保在端點建立期間 **Enable DNS name (啟用 DNS 名稱)** (預設為 true)，以避免這種情況。這會在 VPC 中新增 DNS 項目，此項目會將公有服務端點映射至界面 VPC 端點。

## 設定 VPC 端點以增強運作狀態
<a name="vpc-vpce.healthd"></a>

如果您已啟用環境的[增強型運作狀態報告](health-enhanced.md)，也可以設定要傳送的增強型運作狀態資訊 AWS PrivateLink 。增強型運作狀態資訊會透過 `healthd` 協助程式 (一種位於您環境執行個體上的 Elastic Beanstalk 元件) 傳送至個別的 Elastic Beanstalk 增強型運作狀態服務。如要在您的 VPC 中建立此服務的界面 VPC 端點，請遵循[建立執行個體端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint)程序。
+ 對於 **Service Name (服務名稱)**，請選擇 **com.amazonaws.*region*.elasticbeanstalk-health**。
+ 針對 **IP 地址類型**，選擇 **IPv4** 或 **Dualstack**。目前 Elastic Beanstalk VPC 端點不支援 **IPv6** 的 **IP 地址類型**，這表示IPv6-only。**Dualstack** 選項允許 IPv4 和 IPv6 網際網路通訊協定。

**重要**  
`healthd` 協助程式會將增強型健康資訊傳送至公有端點`elasticbeanstalk-health.region.amazonaws.com`或 `elasticbeanstalk-health.region.api.aws`。如果已使用公有網際網路存取設定 VPC，且 VPC 端點的 **Enable DNS name (啟用 DNS 名稱)** 已停用，則增強的運作狀態資訊會透過公有網際網路傳送。當您設定增強運作狀態 VPC 端點時，這可能不是您的目的。確定 **Enable DNS name (啟用 DNS 名稱)** (預設為 true)。

## 在私有 VPC 中使用 VPC 端點
<a name="vpc-vpce.private"></a>

私有 VPC 或 VPC 中的私有子網路，都沒有公有網際網路存取。建議您在[私有 VPC](vpc.md#services-vpc-private) 中執行 Elastic Beanstalk 環境，並設定界面 VPC 端點以增強安全性。在這種情況下，請注意您的環境可能會因為其他原因 (除了與 Elastic Beanstalk 服務聯絡) 而嘗試連線到網際網路。若要進一步了解如何在私有 VPC 中執行環境，請參閱 [在私有 VPC 中執行 Elastic Beanstalk 環境](vpc.md#services-vpc-private-beanstalk)。

# 使用端點政策搭配 VPC 端點來控制存取
<a name="vpc-vpce.policy"></a>

本主題說明如何將政策連接至 VPC 端點，以控制對應用程式 （您的服務） 和 Elastic Beanstalk 環境的存取。

端點政策是 AWS Identity and Access Management (IAM) 資源政策，可控制從端點到指定服務的存取。端點政策是端點特有的。其與您環境可能擁有任何使用者或執行個體 IAM 政策是分開的，不會覆寫任何這類政策。

根據預設，VPC 端點允許完整存取與其相關聯的服務。當您建立或修改端點時，您可以將*端點政策*連接到它，以控制對與服務相關聯之特定資源的存取。如需撰寫和使用 VPC 端點政策的詳細資訊，請參閱《 *AWS PrivateLink 指南*》中的[使用端點政策控制對 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

**注意**  
當您建立限制性端點政策時，您可能需要將特定許可新增至必要資源，如此端點政策就不會封鎖對這些資源的存取。這樣做可確保您的環境繼續部署並正常運作。

下列範例會拒絕所有使用者透過 VPC 端點終止環境的許可，並允許對所有其他動作的完整存取權。

```
{
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Principal": "*"
        },
        {
            "Action": "elasticbeanstalk:TerminateEnvironment",
            "Effect": "Deny",
            "Resource": "*",
            "Principal": "*"
        }
    ]
}
```

## 限制性 VPC 端點政策所需的 Amazon S3 儲存貯體許可
<a name="AWSHowTo.S3.VPCendpoints"></a>

如果您將限制新增至 VPC 端點政策，則必須包含特定的 Amazon S3 儲存貯體許可，以確保您的環境繼續部署並正常運作。本節說明必要的 S3 儲存貯體，並包含範例政策。

**Topics**
+ [

### 存放資產以管理環境平台的 S3 儲存貯體
](#AWSHowTo.S3.VPCendpoints.required-permissions.assets)
+ [

### 擁有的 S3 儲存貯體 CloudFormation
](#AWSHowTo.S3.VPCendpoints.required-permissions.cloudformation)
+ [

### 客戶帳戶擁有的 S3 儲存貯體，用於存放原始碼和其他項目
](#AWSHowTo.S3.VPCendpoints.required-permissions.items)
+ [

### 客戶帳戶擁有的 S3 儲存貯體，以支援 Docker 登錄檔身分驗證
](#AWSHowTo.S3.VPCendpoints.required-permissions.docker-auth)
+ [

### 更新您的 VPC 端點政策
](#AWSHowTo.S3.VPCendpoints.required-permissions.assets.permissions)

### 存放資產以管理環境平台的 S3 儲存貯體
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.assets"></a>

Elastic Beanstalk 服務擁有 S3 儲存貯體，可存放與解決方案堆疊相關聯的資產 （平台版本）。這些資產包括組態檔案、範例應用程式和可用的執行個體類型。當 Elastic Beanstalk 建立和管理環境時，它會從每個對應的資產儲存貯體中擷取特定平台版本的必要資訊 AWS 區域。

#### S3 儲存貯體 ARN
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.assets.arn"></a>

 `arn:aws:s3:::elasticbeanstalk-samples-region` 

Amazon Linux 2 及更新版本
+  `arn:aws:s3:::elasticbeanstalk-platform-assets-region` 
**注意**  
儲存貯體名稱遵循 *BJS *區域的不同慣例。字串 *public-beta-cn-north-1* 用於取代*區域*。例如 `arn:aws:s3:::elasticbeanstalk-platform-assets-public-beta-cn-north-1`。

Windows Server、Amazon Linux (AMI)、Amazon Linux 2 及更新版本
+  `arn:aws:s3:::elasticbeanstalk-env-resources-region` 
+  `arn:aws:s3:::elasticbeanstalk-region` 

**注意**  
在某些區域中，平台資產和 env-resources 儲存貯體的儲存貯體名稱遵循不同的慣例。如需詳細資訊，請參閱以下區域特定的儲存貯體命名模式一節。

##### 區域特定的儲存貯體 ARN 模式
<a name="AWSHowTo.S3.VPCendpoints.region-specific-buckets.collapsed"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/vpc-vpce.policy.html)

#### 作業
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.assets.operations"></a>

GetObject

#### VPC 端點政策範例
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.assets.example"></a>

下列範例說明如何提供存取美國東部 （俄亥俄） 區域 (us-east-2) 中 Elastic Beanstalk 操作所需的 S3 儲存貯體。此範例列出 Amazon Linux 和 Windows Server 平台的所有儲存貯體。更新您的政策，只包含適用於您環境作業系統的儲存貯體。

##### 範例 政策
<a name="aAWSHowTo.S3.VPCendpoints.required-permissions.assets.example.collapsed"></a>

**重要**  
我們建議您避免在這個政策中的特定區域使用萬用字元 (\$1)。例如，使用 `arn:aws:s3:::cloudformation-waitcondition-us-east-2/*` 而不使用 `arn:aws:s3:::cloudformation-waitcondition-*/*`。使用萬用字元可能允許存取您不想授與存取權的 S3 儲存貯體。如果您想要將政策用於多個區域，建議您為每個區域重複第一個`Statement`區塊。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRequestsToAWSResources",
            "Effect": "Allow",
            "Principal": {"AWS": "*"},
            "Action": ["s3:GetObject"],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-platform-assets-us-east-2/*",
                "arn:aws:s3:::elasticbeanstalk-env-resources-us-east-2/*",
                "arn:aws:s3:::elasticbeanstalk-env-resources-us-east-2/*",
                "arn:aws:s3:::elasticbeanstalk-samples-us-east-2/*"
            ]
         }
    ]
}
```

------

### 擁有的 S3 儲存貯體 CloudFormation
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.cloudformation"></a>

Elastic Beanstalk 使用 CloudFormation 為您的環境建立資源。CloudFormation 在每個 中擁有 S3 儲存貯體 AWS 區域 ，以監控對等待條件的回應。

Elastic Beanstalk 等服務會透過將請求傳送至 CloudFormation 擁有之 S3 Amazon S3 S3 URL 來與 CloudFormation 通訊。CloudFormation 會使用`cloudformation.amazonaws.com`服務主體建立預先簽章的 Amazon S3 URL。

如需更多詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的 [ CloudFormation VPC 端點的考量](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-vpce-bucketnames.html#cfn-setting-up-vpc-considerations)事項。若要進一步了解預先簽章URLs，請參閱《*Amazon S3 使用者指南*》中的[使用預先簽章URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)。

#### S3 儲存貯體 ARN
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.cloudformation.arn"></a>
+  `arn:aws:s3:::cloudformation-waitcondition-region` 

  使用等待條件時，區域名稱會包含破折號。例如，*us-west-2*。
+  `arn:aws:s3:::cloudformation-custom-resource-response-region` 

  使用自訂資源時，區域名稱不包含破折號。例如，*uswest2*。

#### 作業
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.cloudformation.operations"></a>

GetObject

#### VPC 端點政策範例
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.cloudformation.example"></a>

下列範例說明如何提供存取美國東部 （俄亥俄） 區域 (us-east-2) 中 Elastic Beanstalk 操作所需的 S3 儲存貯體。

##### 範例 政策
<a name="aAWSHowTo.S3.VPCendpoints.required-permissions.cloudformation.example.collapsed"></a>

**重要**  
我們建議您避免在這個政策中的特定區域使用萬用字元 (\$1)。例如，使用 `arn:aws:s3:::cloudformation-waitcondition-us-east-2/*` 而不使用 `arn:aws:s3:::cloudformation-waitcondition-*/*`。使用萬用字元可能允許存取您不想授與存取權的 S3 儲存貯體。如果您想要將政策用於多個區域，建議您為每個區域重複第一個`Statement`區塊。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRequestsToCloudFormation",
            "Effect": "Allow",
            "Principal": {"AWS": "*"},
            "Action": ["s3:GetObject"],
            "Resource": [
                "arn:aws:s3:::cloudformation-waitcondition-us-east-2/*",
                "arn:aws:s3:::cloudformation-custom-resource-response-us-east-2/*"
            ]
         }
    ]
}
```

------

### 客戶帳戶擁有的 S3 儲存貯體，用於存放原始碼和其他項目
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.items"></a>

此儲存貯體由擁有環境 AWS 的客戶帳戶所擁有。它存放您環境特有的資源，例如原始碼和請求的日誌。

#### S3 儲存貯體 ARN
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.items.arn"></a>

 `arn:aws:s3:::elasticbeanstalk-region-account-id` 

#### 作業
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.items.operations"></a>
+ GetObject
+ GetObjectAcl
+ PutObject
+ PutObjectAcl
+ ListBucket

#### VPC 端點政策範例
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.items.example"></a>

下列範例說明如何提供存取美國東部 （俄亥俄） 區域 (us-east-2) 中 Elastic Beanstalk 操作所需的 S3 儲存貯體，以及範例 AWS 帳戶 ID 123456789012。

##### 範例 政策
<a name="aAWSHowTo.S3.VPCendpoints.required-permissions.items.example.collapsed"></a>

**重要**  
我們建議您避免在這個政策中的特定區域使用萬用字元 (\$1)。例如，使用 `arn:aws:s3:::cloudformation-waitcondition-us-east-2/*` 而不使用 `arn:aws:s3:::cloudformation-waitcondition-*/*`。使用萬用字元可能允許存取您不想授與存取權的 S3 儲存貯體。如果您想要將政策用於多個區域，建議您為每個區域重複第一個`Statement`區塊。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRequestsToCustomerItems",
            "Effect": "Allow",
            "Principal": {"AWS": "*"},
            "Action": [
               "s3:GetObject",
               "s3:GetObjectAcl",
               "s3:PutObject",
               "s3:PutObjectAcl",
               "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/*"
            ]
         }
    ]
}
```

------

### 客戶帳戶擁有的 S3 儲存貯體，以支援 Docker 登錄檔身分驗證
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.docker-auth"></a>

此儲存貯體僅適用於以 Docker 平台為基礎的環境。儲存貯體會存放用來向私有 Docker 登錄檔進行身分驗證的檔案，該登錄檔位於客戶佈建的 S3 儲存貯體上。如需詳細資訊，請參閱本指南的 Docker 平台章節中的[使用 `Dockerrun.aws.json` v3 檔案](docker-configuration.remote-repo.md#docker-configuration.remote-repo.dockerrun-aws)。

#### S3 儲存貯體 ARN
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.docker-auth.arn"></a>

ARN 會因客戶帳戶而異。

S3 儲存貯體 ARN 的格式如下： `arn:aws:s3:::bucket-name`

#### 作業
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.docker-auth.operations"></a>

GetObject

#### VPC 端點政策範例
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.docker-auth.example"></a>

下列範例說明如何提供名稱為 amzn-s3-demo-bucket1 的 S3 儲存貯體存取權。

##### 範例 政策
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.docker-auth.example.collapsed"></a>

------
#### [ JSON ]

****  

```
  {
  "Version":"2012-10-17",		 	 	 
  "Statement": [
     {
        "Sid": "AllowRequestsToDockerRegistryAuth",
         "Effect": "Allow",
         "Action": [
            "s3:GetObject"
          ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1"
      ]
    }
  ]
}
```

------

### 更新您的 VPC 端點政策
<a name="AWSHowTo.S3.VPCendpoints.required-permissions.assets.permissions"></a>

由於 VPC 端點只連接一個政策，您必須將所有許可合併為一個政策。下列範例提供將所有先前的範例合併為一個。

如需撰寫和使用 VPC 端點政策的詳細資訊，請參閱《 *AWS PrivateLink 指南*》中的[使用端點政策控制對 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

如同上述範例，以下範例說明如何提供存取美國東部 （俄亥俄） 區域 (us-east-2) 中 Elastic Beanstalk 操作所需的 S3 儲存貯體。它還包含具有範例 AWS 帳戶 ID 123456789012 的儲存貯體，以及範例儲存貯體名稱 amzn-s3-demo-bucket1。

**重要**  
我們建議您避免在這個政策中的特定區域使用萬用字元 (\$1)。例如，使用 `arn:aws:s3:::cloudformation-waitcondition-us-east-2/*` 而不使用 `arn:aws:s3:::cloudformation-waitcondition-*/*`。使用萬用字元可能允許存取您不想授與存取權的 S3 儲存貯體。如果您想要將政策用於多個區域，建議您為每個區域重複第一個`Statement`區塊。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRequestsToAWSResources",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-platform-assets-us-east-2/*",
                "arn:aws:s3:::elasticbeanstalk-env-resources-us-east-2/*",
                "arn:aws:s3:::elasticbeanstalk-samples-us-east-2/*"
            ]
        },
        {
            "Sid": "AllowRequestsToCloudFormation",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::cloudformation-waitcondition-us-east-2/*",
                "arn:aws:s3:::cloudformation-custom-resource-response-us-east-2/*"
            ]
        },
        {
            "Sid": "AllowRequestsToCustomerItems",
            "Effect": "Allow",
            "Action": [
               "s3:GetObject",
               "s3:GetObjectAcl",
              "s3:PutObject",
               "s3:PutObjectAcl",
               "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/*"
            ]
        },
        {
            "Sid": "AllowRequestsToDockerRegistryAuth",
            "Effect": "Allow",
            "Action": [
            "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        }
    ]
}
```

------