

# Amazon ECS Linux 컨테이너 인스턴스 네트워크 인터페이스 증가
<a name="container-instance-eni"></a>

**참고**  
이 기능은 Fargate에서 사용할 수 없습니다.

`awsvpc` 네트워크 모드를 사용하는 각 작업은 고유한 탄력적 네트워크 인터페이스(ENI)를 수신합니다. 이 인터페이스는 이를 호스팅하는 컨테이너 인스턴스에 연결되어 있습니다. Amazon EC2 인스턴스에 연결할 수 있는 네트워크 인터페이스 수에 대한 기본 제한이 있으며 기본 네트워크 인터페이스는 한 개로 계산됩니다. 예를 들어 기본적으로 `c5.large` 인스턴스에는 ENI를 3개까지 연결할 수 있습니다. 인스턴스에 대한 기본 네트워크 인터페이스는 한 개로 계산되므로 인스턴스에 ENI를 2개 더 연결할 수 있습니다. `awsvpc` 네트워크 모드를 사용하는 각 작업에는 ENI가 필요하므로 대개 이 인스턴스 유형에서는 이러한 작업을 2개만 실행할 수 있습니다.

Amazon ECS에서는 지원되는 Amazon EC2 인스턴스 유형을 사용하여 늘어난 ENI 밀도와 함께 컨테이너 인스턴스를 시작할 수 있습니다. 이러한 인스턴스 유형을 사용하고 `awsvpcTrunking` 계정 설정을 활성화하면 새로 시작된 컨테이너 인스턴스에서 추가 ENI를 사용할 수 있습니다. 이 구성을 통해 각 컨테이너 인스턴스에 추가 작업을 배치할 수 있습니다. 콘솔을 사용하여 기능을 켜려면 [Amazon ECS 계정 설정 수정](ecs-modifying-longer-id-settings.md) 섹션을 참조하세요. AWS CLI를 사용하여 기능을 켜려면 [AWS CLI를 사용하여 Amazon ECS 계정 설정 관리](account-setting-management-cli.md) 섹션을 참조하세요.

예를 들어 `awsvpcTrunking`이 있는 `c5.large` 인스턴스의 경우 ENI 제한이 12로 증가합니다. 컨테이너 인스턴스는 기본 네트워크 인터페이스를 가지며 Amazon ECS는 “트렁크” 네트워크 인터페이스를 생성하여 컨테이너 인스턴스에 연결합니다. 따라서 이 구성을 통해 컨테이너 인스턴스에서 현재 두 개의 작업 대신 10개의 태스크를 시작할 수 있습니다.

트렁크 네트워크 인터페이스는 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 사용 설명서*의 [보안 그룹 규칙](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 Management Console에서 서비스를 생성 또는 업데이트할 때 자동으로 생성됩니다. 자세한 정보는 [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` 이상의 컨테이너 에이전트 및 버전 `1.28.1-2` 이상의 ecs-init 패키지가 있어야 합니다. Amazon ECS 최적화 AMI의 최신 Linux 변형을 사용하는 경우 이러한 요구 사항이 충족됩니다. 자세한 내용은 [Amazon ECS Linux 컨테이너 인스턴스 시작](launch_container_instance.md) 섹션을 참조하세요.

**중요**  
Amazon EC2 인스턴스에는 리소스 기반 IPv4 DNS 요청이 꺼져 있어야 합니다. 이 옵션을 비활성화하려면 **리소스 기반 IPV4(A 레코드) DNS 요청 활성화** 옵션이 Amazon EC2 콘솔을 사용하여 새 인스턴스를 생성할 때 선택 취소되었는지 확인합니다. AWS CLI을(를) 사용하여 이 옵션을 비활성화하려면 다음 명령을 사용합니다.  

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

**AWS CLI를 사용하여 늘어난 ENI 제한이 있는 컨테이너 인스턴스를 보는 방법**

각 컨테이너 인스턴스에는 트렁크 네트워크 인터페이스라고 하는 기본 네트워크 인터페이스가 있습니다. 다음 명령을 통해 `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}}
  ```