

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

# 設定雙堆疊 Elastic Beanstalk 負載平衡器
<a name="environments-cfg-elbv2-ipv6-dualstack"></a>

您可以啟用 Elastic Beanstalk 環境，以雙堆疊設定的負載平衡器同時提供 IPv4 和 IPv6 通訊協定。當您建立負載平衡環境時，基礎設施預設為 IPv4。您可以選擇使用雙堆疊組態建立新的環境，或將現有的IPv4-only環境更新為雙堆疊。

若要讓環境的負載平衡器同時提供 IPv6 和 IPv4 網路流量，請將[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)命名空間中的 `IpAddressType`選項設定為*雙堆疊*。

**注意**  
Elastic Beanstalk 僅支援 Application Load Balancer 和 Network Load Balancer 的雙堆疊通訊協定。它不支援使用 Classic Load Balancer 或單一執行個體環境的環境的雙堆疊。

## Amazon VPC 先決條件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs"></a>

在 Elastic Beanstalk 環境中設定負載平衡器之前，您必須先使用 Amazon VPC 完成一些組態步驟：

1. 將 IPv6 CIDR 區塊與環境的 VPC 建立關聯。

1. 將 IPv6 CIDR 區塊與所有 VPC 子網路建立關聯。

1. （選用） 如果您的環境與 VPC 外部的元件交換網路流量，其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下，您必須更新 VPC 路由表以啟用 IPv6 流量。

您可以使用 Amazon VPC 主控台或 AWS CLI 命令來完成這些先決條件組態。以下主題將引導您，並引導您參閱 *Amazon VPC 使用者指南*和*AWS CLI 命令參考*，以取得更多詳細資訊。

**注意**  
完成 VPC 組態後，請等待幾分鐘讓變更傳播，然後再為負載平衡器設定雙堆疊。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘讓 VPC 組態傳播，然後再次嘗試雙堆疊組態。

### 使用主控台完成 VPC 先決條件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.console"></a>

*Amazon VPC 使用者指南*提供完成這些先決條件任務的詳細步驟。

1. 請參閱《*Amazon VPC* [使用者指南》中的步驟 1：將 IPv6 CIDR 區塊與 VPC 和子網路建立關聯](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-cidr)。

   此步驟提供您必須完成的兩個程序：
   + 建立 IPv6 CIDR 區塊與 VPC 的關聯。
   + 將 IPv6 CIDR 區塊與您的 VPC 子網路建立關聯。

1. （選用） 如果您的環境與 VPC 外部的元件交換網路流量，其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下，您必須更新 VPC 路由表以啟用 IPv6 流量。若要完成此組態，請參閱《*Amazon VPC 使用者指南*》中的[步驟 2：更新您的路由表](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-routes)。

### 使用 完成 VPC 先決條件 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.cli"></a>

您可以使用 AWS CLI 來完成和驗證先決條件組態。

1. 將 IPv6 CIDR 區塊與環境的 VPC 建立關聯。

   1. 使用 [associate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-vpc-cidr-block.html) 命令，將 CIDR 區塊與您的 VPC 建立關聯。

   1. 使用 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 命令來驗證 VPC 組態。

   

     
**Example commands**  

   ```
   # Associate an Amazon-provided IPv6 CIDR block with your VPC
   aws ec2 associate-vpc-cidr-block \
       --vpc-id {{vpc-12345678}} \
       --region {{us-east-1}}  \
       --amazon-provided-ipv6-cidr-block
   
   # Verify the IPv6 CIDR block association
   aws ec2 describe-vpcs \
       --vpc-ids {{vpc-12345678}} \
       --region {{us-east-1}}  \
       --query {{'Vpcs[0].Ipv6CidrBlockAssociationSet'}}
   ```

1. 將 IPv6 CIDR 區塊與所有 VPC 子網路建立關聯。

   1. 使用 [associate-subnet-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-subnet-cidr-block.html) 命令，將 CIDR 區塊與您的子網路建立關聯。

   1. 使用 [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) 命令來驗證子網路組態。

   

     
**Example commands**  

   ```
   # List all subnets in your VPC
   aws ec2 describe-subnets \
       --region {{us-east-1}}  \
       --filters {{"Name=vpc-id,Values=vpc-12345678"}} \
       --query {{'Subnets[].{SubnetId:SubnetId,AvailabilityZone:AvailabilityZone}'}}
   
   # Associate IPv6 CIDR block with each subnet
   aws ec2 associate-subnet-cidr-block \
       --subnet-id {{subnet-12345678}} \
       --region {{us-east-1}}  \
       --ipv6-cidr-block {{2001:db8::/64}}
   
   # Verify IPv6 CIDR block association for all subnets
   aws ec2 describe-subnets \
       --region {{us-east-1}}  \
       --filters {{"Name=vpc-id,Values=vpc-12345678"}} \
       --query {{'Subnets[].{SubnetId:SubnetId,Ipv6CidrBlock:Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock}'}}
   ```

1.  （選用） 如果您的環境與 VPC 外部的元件交換網路流量，其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下，您必須更新 VPC 路由表以啟用 IPv6 流量。

   1. 使用 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令在 VPC 內的路由表中新增路由。

   1. 使用 [describe-route-tables](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-route-tables.html) 命令來驗證您的路由表。

   

     
**Example commands**  

   ```
   # Add IPv6 route to Internet Gateway for public subnets
   aws ec2 create-route \
       --route-table-id {{rtb-12345678}} \
       --destination-ipv6-cidr-block {{::/0}} \
       --gateway-id {{igw-12345678}}  \
       --region {{us-east-1}}
   
   # Add IPv6 route to NAT Gateway for private subnets (if applicable)
   aws ec2 create-route \
       --route-table-id {{rtb-87654321}} \
       --destination-ipv6-cidr-block {{::/0}} \
       --nat-gateway-id {{nat-12345678}} \
       --region {{us-east-1}}
   
   # Verify routes
   aws ec2 describe-route-tables \
       --route-table-ids {{rtb-12345678}} \
       --region {{us-east-1}} \
       --query {{'RouteTables[0].Routes'}}
   ```

## 為您的 Elastic Beanstalk 負載平衡器設定雙堆疊
<a name="environments-cfg-elbv2-ipv6-dualstack.enable"></a>

為您的環境設定 VPC 先決條件組態之後，您可以使用雙堆疊選項設定負載平衡器，以便同時提供 IPv4 和 IPv6 通訊協定。您可以使用 Elastic Beanstalk 主控台、 AWS CLI、 中的組態檔案`.ebextensions`，以及 AWS SDK 來設定負載平衡器來提供雙堆疊流量。

### 使用主控台
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.console"></a>

您可以使用 Elastic Beanstalk 主控台來設定環境負載平衡器的雙堆疊。

**注意**  
此組態取決於數個點的資料傳播時間。當您設定負載平衡器並測試變更時，請考慮下列時間要求。  
*VPC 組態時間。*完成中所述的 VPC 組態後[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，請等待幾分鐘讓變更傳播，然後再遵循這些程序。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘，然後重試組態步驟。  
*DNS 傳播時間。*將 `IpAddressType`選項設定為 *dualstack* 之後，請等待幾分鐘讓變更傳播，再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間，如果您使用 IPv6 通訊協定啟動請求，則測試從用戶端到應用程式的通訊時可能會遇到問題。

**建立新環境：設定負載平衡器以獲得雙堆疊支援**

1. 啟動 Elastic Beanstalk 主控台，並開始建立新環境的步驟。在**設定****服務存取頁面中設定必要欄位服務角色**和 **EC2 執行個體描述**檔後，請繼續此程序中的步驟，將負載平衡器設定為雙堆疊組態。如需開始使用的詳細資訊，請參閱 [建立 Elastic Beanstalk 環境](using-features.environments.md)。

1. 從**設定服務存取**中選取**下一步**。

1. **設定聯網、資料庫和標籤**頁面隨即顯示。

   如果您已完成上一節[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)所述的 ，則表示您已設定所需的 VPC 和子網路。在此情況下，請略過此步驟及其子步驟，以繼續選取 VPC。

   1. 若要設定 VPC 和子網路，您可以選擇**建立 VPC** 以導覽至 VPC 主控台。請遵循 [使用主控台完成 VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 中的步驟。

   1.  等待幾分鐘讓 VPC 更新傳播，然後返回 Elastic Beanstalk 主控台並選取重新整理以繼續下一個步驟。

       如果您在其餘步驟中遇到 VPC 或子網路組態錯誤，請等待幾分鐘，讓 VPC 組態有時間傳播，然後再試一次這些步驟。

1. 在**設定聯網、資料庫和標籤**頁面上，從具有相關聯 IPv6 CIDR 區塊的 **VPC** 下拉式清單中選取值。

   選取 VPC 之後，**執行個體子網路**會填入 VPC 子網路。

1. 選取一或多個**執行個體子網路**，然後選取**下一步**。

1. **設定執行個體流量和擴展**頁面隨即顯示。

   在**負載平衡器網路設定**中，選取**啟用****雙堆疊 (IPv4 和 IPv6)。**

1. 選取**負載平衡器類型**。**應用程式負載平衡器**或**網路負載平衡器**都支援*雙堆疊*。

1. 您可以在目前的主控台頁面上繼續設定其他負載平衡器選項。如需負載平衡器選項和組態的詳細資訊，請參閱本章的其他主題。

1. 繼續執行完成環境組態和建立的步驟。如需詳細資訊，請參閱[建立 Elastic Beanstalk 環境](using-features.environments.md)。



**現有環境：為雙堆疊支援設定負載平衡器**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇**組態**。

1. 在**網路和資料庫**組態類別中，選擇**編輯**。

1. 如果您已完成上一節[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)所述的 ，則表示您已設定所需的 VPC 和子網路。在此情況下，請略過此步驟及其子步驟，以繼續選取 VPC。

   1. 若要設定 VPC 和子網路，您可以選擇**建立 VPC** 以導覽至 VPC 主控台。請遵循 [使用主控台完成 VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 中的步驟。

   1.  等待幾分鐘讓 VPC 更新傳播，然後返回 Elastic Beanstalk 主控台並選取重新整理以繼續下一個步驟。

       如果您在其餘步驟中遇到 VPC 或子網路組態錯誤，請等待幾分鐘，讓 VPC 組態有時間傳播，然後再試一次這些步驟。

1. 在**網路和資料庫**頁面中，從具有相關聯 IPv6 CIDR 區塊的 **VPC** 下拉式清單中選取值。

   選取 VPC 之後，**執行個體子網路**會填入 VPC 子網路。

1. 選取一或多個**執行個體子網路**。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

1. 在 **Instance traffic and scaling** (執行個體流量和擴展) 組態類別中，選擇 **Edit** (編輯)。

1. 在**負載平衡器網路設定**中，選取**啟用****雙堆疊 (IPv4 和 IPv6)。**

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

### 使用 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.cli"></a>

您可以使用 AWS 命令列界面 (AWS CLI) 來設定您環境的負載平衡器，以同時提供 IPv6 和 IPv4 網路流量。本節提供具有 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 命名空間的 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 和 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令範例。

**注意**  
此組態取決於數個點的資料傳播時間。當您設定負載平衡器並測試變更時，請考慮下列時間要求。  
*VPC 組態時間。*完成中所述的 VPC 組態後[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，請等待幾分鐘讓變更傳播，然後再執行這些命令來設定雙堆疊的負載平衡器。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘，然後再試一次命令。  
*DNS 傳播時間。*將 `IpAddressType`選項設定為 *dualstack* 之後，請等待幾分鐘讓變更傳播，再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間，如果您使用 IPv6 通訊協定啟動請求，則測試從用戶端到應用程式的通訊時可能會遇到問題。

 

**Example 具有雙堆疊組態的 create-environment （命名空間選項內嵌）**  

```
aws elasticbeanstalk create-environment \
--region {{us-east-1}} \
--application-name {{my-app}} \
--environment-name {{my-env}} \
--solution-stack-name {{"64bit Amazon Linux 2 v3.4.0 running Python 3.8"}} \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value={{dualstack}}
```



或者，您也可以使用 `options.json` 檔案來指定命名空間選項，而非透過內嵌方式一併包含於其中。下列範例命令示範 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令。

**Example 具有雙堆疊組態的 update-environment (`options.json`檔案中的命名空間選項）**  

```
aws elasticbeanstalk update-environment \
--region {{us-east-1}} \
--application-name {{my-app}} \
--environment-name {{my-env}} \
--solution-stack-name {{"64bit Amazon Linux 2 v3.4.0 running Python 3.8"}} \
--option-settings \ file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:elbv2:loadbalancer",
    "OptionName": "IpAddressType",
    "Value": "{{dualstack}}"
  }
]
```



下列範例會更新現有環境，將 `IpAddressType`選項設定為 *IPv4*。

**注意**  
如果您需要將環境組態從雙堆疊復原至 IPv4，此範例`update-environment`命令會很有用。

**Example 將 IpAddressType 設定為 IPv4 的 update-environment**  

```
aws elasticbeanstalk update-environment \
--region {{us-east-1}} \
--application-name {{my-app}} \
--environment-name {{my-env}} \
--solution-stack-name {{"64bit Amazon Linux 2 v3.4.0 running Python 3.8"}} \
--option-settings \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value={{ipv4}}
```

### 使用 .ebextensions 組態檔案
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.ebx"></a>

您可以使用 Elastic Beanstalk [組態檔案](ebextensions.md)，讓環境的負載平衡器同時提供 IPv6 和 IPv4 網路流量。將[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)命名空間中的 `IpAddressType`選項設定為 *dualstack*。

**注意**  
此組態取決於數個點的資料傳播時間。當您設定負載平衡器並測試變更時，請考慮下列時間要求。  
*VPC 組態時間。*完成 中所述的 VPC 組態後[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，請等待幾分鐘讓 VPC 變更傳播，再套用`.ebextensions`組態。如果您在此組態設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘，然後再試一次。  
*DNS 傳播時間。*將 `IpAddressType`選項設定為 *dualstack* 之後，請等待幾分鐘讓變更傳播，再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間，如果您使用 IPv6 通訊協定啟動請求，則測試從用戶端到應用程式的通訊時可能會遇到問題。

**Example 負載平衡器雙堆疊組態的 .ebextensions/options.config [（速記語法](ebextensions-optionsettings.md#ebextensions-optionsettings.title))**  

```
option_settings:
  aws:elbv2:loadbalancer:
    IpAddressType: {{dualstack}}
```

**Example 負載平衡器雙堆疊組態的 .ebextensions/options.config [（標準語法](ebextensions-optionsettings.md#ebextensions-optionsettings.title))**  

```
option_settings:
  - namespace: aws:elbv2:loadbalancer
    option_name: IpAddressType
    value: {{dualstack}}
```

### 使用 AWS SDK
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.sdk"></a>

您可以使用 SDK 設定雙堆疊[AWS SDKs](https://docs.aws.amazon.com//code-library/)。與上一節提到的 `update-environment`和 `create-environment` AWS CLI 命令類似，您可以使用 [CreateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_CreateEnvironment.html) 和 [UpdateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_UpdateEnvironment.html) API 動作。使用 `OptionSettings`請求參數來指定[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)命名空間的選項。

**注意**  
此組態取決於數個點的資料傳播時間。當您設定負載平衡器並測試變更時，請考慮下列時間要求。  
*VPC 組態時間。*完成中所述的 VPC 組態後[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，請等待幾分鐘讓變更傳播，再執行程式來設定雙堆疊的負載平衡器。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘，然後再次嘗試執行雙堆疊組態的程式。  
*DNS 傳播時間。*將 `IpAddressType`選項設定為 *dualstack* 之後，請等待幾分鐘讓變更傳播，再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間，如果您使用 IPv6 通訊協定啟動請求，則測試從用戶端到應用程式的通訊時可能會遇到問題。

## 疑難排解
<a name="environments-cfg-elbv2-ipv6-dualstack.troubleshooting"></a>

**試用 Amazon Q Developer CLI 進行 AI 輔助故障診斷**  
 Amazon Q Developer CLI 可協助您快速疑難排解環境問題。Q CLI 透過檢查環境狀態、檢閱事件、分析日誌和詢問釐清問題來提供解決方案。如需詳細資訊和詳細的逐步解說，請參閱 AWS 部落格中的[使用 Amazon Q Developer CLI 疑難排解 Elastic Beanstalk 環境](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。

本節提供針對負載平衡器雙堆疊組態問題進行疑難排解的指引。

**事件：***VPC {{vpc\_id}} 未設定 IPv6 CIDR 區塊。dualstack 負載平衡器需要 IPv6 CIDR 區塊。在使用雙堆疊模式之前，請將 IPv6 CIDR 區塊與您的 VPC 建立關聯。*

您的 VPC 和所有子網路必須具有與其相關聯的 IPv6 CIDR 區塊。這是在設定負載平衡器進行雙堆疊支援之前，您必須完成的其中一個 VPC 先決條件。如需完成此任務的詳細資訊，請參閱本主題稍[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)早的 。

 **事件：***一或多個 VPC {{vpc\_id}} 子網路未設定 IPv6 CIDR 區塊。與雙堆疊負載平衡器搭配使用的子網路需要 IPv6 CIDR 區塊。在使用雙堆疊模式之前，請將 IPv6 CIDR 區塊與所有必要子網路建立關聯。*

VPC 的所有子網路都必須具有與其相關聯的 IPv6 CIDR 區塊。這是在設定負載平衡器進行雙堆疊支援之前，您必須完成的其中一個 VPC 先決條件。如需完成此任務的詳細資訊，請參閱本主題稍[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)早的 。

 **錯誤：** *`IpAddressType`選項僅適用於使用 Application Load Balancer 或 Network Load Balancer 設定的 Elastic Beanstalk 環境。*

此訊息表示您的 Elastic Beanstalk 環境可能是單一執行個體環境，也可能是使用 Classic Load Balancer。只有使用 Application Load Balancer 或 Network Load Balancer 設定的環境才能設定 `IpAddressType`。