

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

# 增加 Amazon ECS Linux 容器執行個體網路介面數量
<a name="container-instance-eni"></a>

**注意**  
此功能不適用於 Fargate。

每個使用 `awsvpc` 網路模式的任務都會收到專用的彈性網路介面 (ENI)，該介面會連接至託管此任務的容器執行個體。Amazon EC2 執行個體可連接的網路介面數量有預設限制，主要網路介面計算在內。例如，根據預設，`c5.large` 執行個體最多可連接三個 ENI。執行個體的主要網路界面計算在內，所以您可以再連接兩個 ENI 到執行個體。因為每個使用 `awsvpc` 網路模式的任務都需要 ENI，所以通常只能對此執行個體類型執行兩個這類任務。

Amazon ECS 支援使用受支援的 Amazon EC2 執行個體類型，以更高的 ENI 密度來啟動容器執行個體。當您使用這些執行個體類型並啟用 `awsvpcTrunking` 帳戶設定時，新啟動的容器執行個體會提供額外的 ENI。此組態可讓您在每個容器執行個體中安排更多任務。若要使用主控台啟用此功能，請參閱[修改 Amazon ECS 帳戶設定](ecs-modifying-longer-id-settings.md)。若要使用 AWS CLI 開啟功能，請參閱 [使用 管理 Amazon ECS 帳戶設定 AWS CLI](account-setting-management-cli.md)。

例如，啟用 `awsvpcTrunking` 的 `c5.large` 執行個體，其 ENI 限制會增加至 12 個。容器執行個體會有主要網路介面，而 Amazon ECS 會建立「幹線」網路介面，並將它連接到容器執行個體。因此，此組態可讓您在容器執行個體中啟動十項任務，而不是目前的兩項任務。

幹線網路介面由 Amazon ECS 全受管，當您在叢集中終止或取消註冊您的容器執行個體時，會將其刪除。如需詳細資訊，請參閱[EC2 的 Amazon ECS 任務聯網選項](task-networking.md)。

## 考量事項
<a name="eni-trunking-considerations"></a>

使用 ENI 主幹功能時，建議考量下列事項。
+ 只有 Amazon ECS 最佳化 AMI 的 Linux 變體，或具有 `1.28.1` 版本或更新版本容器代理程式和版本 `1.28.1-2` 或更新版本 ecs-init 套件的其他 Amazon Linux 變體，才支援更高的 ENI 限制。如果您使用 Amazon ECS 最佳化 AMI 的最新 Linux 變體，將會滿足這些要求。目前不支援 Windows 容器。
+ 只有在啟用 `awsvpcTrunking` 後啟動的新 Amazon EC2 執行個體，才會收到更高的 ENI 限制和幹線網路介面。無論採取何種動作，先前啟動的執行個體都不會收到這些功能。
+ Amazon EC2 執行個體必須關閉資源型 IPv4 DNS 請求。若要停用此選項，在 Amazon EC2 主控台中建立新執行個體時，請清除**啟用資源型 IPV4 (A 記錄) DNS 請求**選項。若要使用 停用此選項 AWS CLI，請使用下列命令。

  ```
  aws ec2 modify-private-dns-name-options --instance-id {{i-xxxxxxx}} --no-enable-resource-name-dns-a-record --no-dry-run
  ```
+ 不支援共用子網路中的 Amazon EC2 執行個體。就算使用也無法註冊到叢集。
+ 您的任務必須使用 `awsvpc` 網路模式和 EC2。使用 Fargate 的任務，會一律收到專用的 ENI (不論啟動多少)，因此不需要此功能。
+ 您的任務必須與容器執行個體在相同的 Amazon VPC 中啟動。如果您的任務不在同一 VPC 中，則任務會因為屬性錯誤而失敗。
+ 啟動新的容器執行個體時，執行個體將轉換為 `REGISTERING` 狀態，同時為執行個體佈建幹線彈性網路介面。如果註冊失敗，執行個體會轉換到 `REGISTRATION_FAILED` 狀態。透過說明容器執行個體以檢視說明失敗原因的 `statusReason` 欄位，可對失敗註冊進行故障排除。然後可以手動解除註冊或終止容器執行個體。容器執行個體成功取消註冊或終止後，Amazon ECS 將刪除幹線 ENI。
**注意**  
Amazon ECS 會發出容器執行個體狀態變更事件，您可以監控執行個體是否轉換為 `REGISTRATION_FAILED` 狀態。如需詳細資訊，請參閱[Amazon ECS 容器執行個體狀態變更事件](ecs_container_instance_events.md)。
+ 容器執行個體終止後，執行個體將轉換為 `DEREGISTERING` 狀態，同時解除佈建幹線彈性網路介面。然後，執行個體會轉換為 `INACTIVE` 狀態。
+ 如果具有更高 ENI 限制之公有子網路中的容器執行個體停止再重新啟動，執行個體會遺失其公有 IP 位址，且容器代理程式將失去其連線。
+ 啟用 `awsvpcTrunking` 時，容器執行個體會收到使用 VPC 預設安全群組的額外 ENI，並由 Amazon ECS 管理。

  預設 VPC 在每個可用區域附帶一個公有子網路、一個網際網路閘道，以及啟用 DNS 解析的設定。子網路是公有子網路，因為主路由表會將以網際網路為目標的子網路流量傳送至網際網路閘道。您可將路由從目標 0.0.0.0/0 移至網際網路閘道，將預設子網路變成私有子網路。但若如此做，在該子網路中執行的任何容器執行個體都無法存取網際網路。您可以新增或刪除安全群組規則，控制進出子網路的流量。如需詳細資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html)。

## 先決條件
<a name="eni-trunking-launching"></a>

在啟動具有更高 ENI 限制的容器執行個體之前，必須完成下列先決條件。
+ 必須先建立 Amazon ECS 的服務連結角色。Amazon ECS 服務連結角色提供 Amazon ECS 代表您呼叫其他 AWS 服務的許可。這個角色會在您建立叢集，或在 AWS 管理主控台中建立或更新服務時，自動為您建立。如需詳細資訊，請參閱[使用 Amazon ECS 的服務連結角色](using-service-linked-roles.md)。您也可以使用下列 AWS CLI 命令建立服務連結角色。

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ 您的帳戶或容器執行個體 IAM 角色必須啟用 `awsvpcTrunking` 帳戶設定。我們建議您建立 2 個容器執行個體角色 (`ecsInstanceRole`)。然後，您可以為一個角色啟用 `awsvpcTrunking` 帳戶設定，並將該角色用於需要 ENI 主幹功能的任務。如需有關容器執行個體的詳細資訊，請參閱 [Amazon ECS 容器執行個體 IAM 角色](instance_IAM_role.md)。

符合先決條件後，您可以使用其中一種受支援的 Amazon EC2 執行個體類型來啟動新容器執行個體，且執行個體將具有更高的 ENI 限制。如需支援的執行個體類型清單，請參閱 [援更多 Amazon ECS 容器網路介面的執行個體](eni-trunking-supported-instance-types.md)。容器執行個體必須具有容器代理程式的 `1.28.1` 版或更新版本，以及 ecs-init 套件的 `1.28.1-2` 版或更新版本。如果您使用 Amazon ECS 最佳化 AMI 的最新 Linux 變體，將會滿足這些要求。如需詳細資訊，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

**重要**  
Amazon EC2 執行個體必須關閉資源型 IPv4 DNS 請求。若要停用此選項，在使用 Amazon EC2 主控台建立新執行個體時，請務必取消選取 **Enable resource-based IPV4 (A record) DNS requests** (啟用資源型 IPV4 (A 記錄) DNS 請求) 選項。若要使用 停用此選項 AWS CLI，請使用下列命令。  

```
aws ec2 modify-private-dns-name-options --instance-id {{i-xxxxxxx}} --no-enable-resource-name-dns-a-record --no-dry-run
```

**若要使用 檢視具有更高ENI限制的容器執行個體 AWS CLI**

每個容器執行個體都有預設的網路界面，稱為幹線網路界面。使用下列命令，透過查詢 `ecs.awsvpc-trunk-id` 屬性來列出具有更高 ENI 限制的容器執行個體，該屬性指出其具有幹線網路介面。
+ [list-attributes](https://docs.aws.amazon.com/cli/latest/reference/ecs/list-attributes.html) (AWS CLI)

  ```
  aws ecs list-attributes \
        --target-type container-instance \
        --attribute-name ecs.awsvpc-trunk-id \
        --cluster {{cluster_name}} \
        --region {{us-east-1}}
  ```
+ [Get-ECSAttributeList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ECSAttributeList.html) (AWS Tools for Windows PowerShell)

  ```
  Get-ECSAttributeList -TargetType container-instance -AttributeName ecs.awsvpc-trunk-id -Region {{us-east-1}}
  ```