Amazon ECS Fargate용 태스크 네트워킹 옵션

Amazon ECS Fargate용 태스크 네트워킹 옵션

기본적으로 Fargate의 모든 Amazon ECS 태스크에는 기본 프라이빗 IP 주소가 있는 탄력적 네트워크 인터페이스(ENI)가 제공됩니다. 이 글에서는 Fargate 태스크의 네트워킹 동작을 알아봅니다.

출처: 문서

본문

기본적으로 Fargate의 모든 Amazon ECS 태스크에는 기본 프라이빗 IP 주소가 있는 탄력적 네트워크 인터페이스(ENI)가 제공됩니다. 퍼블릭 서브넷을 사용할 때 태스크의 ENI에 퍼블릭 IP 주소를 선택적으로 할당할 수 있어요. VPC가 듀얼 스택(dual-stack) 모드로 구성되어 있고 IPv6 CIDR 블록이 있는 서브넷을 사용한다면 태스크의 ENI는 IPv6 주소도 받습니다. 태스크는 한 번에 하나의 ENI만 연결할 수 있습니다. 같은 태스크에 속한 컨테이너는 localhost 인터페이스를 통해 통신할 수도 있어요. VPC와 서브넷에 대한 자세한 내용은 Amazon VPC 사용자 가이드의 Amazon VPC 작동 방식 문서를 참고하세요.

Fargate의 태스크가 컨테이너 이미지를 풀하려면 태스크에 인터넷 경로(route)가 있어야 합니다. 태스크에 인터넷 경로가 있는지 확인하는 방법은 다음과 같습니다:

  • 퍼블릭 서브넷을 사용할 때 태스크 ENI에 퍼블릭 IP 주소를 할당할 수 있습니다.
  • 프라이빗 서브넷을 사용할 때 서브넷에 NAT 게이트웨이를 연결할 수 있습니다.
  • Amazon ECR에 호스팅된 컨테이너 이미지를 사용할 때 Amazon ECR이 인터페이스 VPC 엔드포인트를 사용하도록 구성하면 이미지 풀이 태스크의 프라이빗 IPv4 주소를 통해 이루어집니다. 자세한 내용은 Amazon Elastic Container Registry 사용자 가이드의 Amazon ECR 인터페이스 VPC 엔드포인트(AWS PrivateLink) 문서를 참고하세요.

각 태스크는 자체 ENI를 얻으므로 VPC Flow Logs 같은 네트워킹 기능을 사용할 수 있어요. VPC Flow Logs로 태스크를 오가는 트래픽을 모니터링할 수 있습니다. 자세한 내용은 Amazon VPC 사용자 가이드의 VPC Flow Logs 문서를 참고하세요. 또한 AWS PrivateLink를 활용할 수 있습니다. VPC 인터페이스 엔드포인트를 구성하여 프라이빗 IP 주소로 Amazon ECS API에 접근할 수 있어요. AWS PrivateLink는 VPC와 Amazon ECS 사이의 모든 네트워크 트래픽을 Amazon 네트워크로 제한합니다. 인터넷 게이트웨이, NAT 디바이스, 가상 프라이빗 게이트웨이가 필요하지 않습니다. 자세한 내용은 Amazon ECS 인터페이스 VPC 엔드포인트(AWS PrivateLink) 문서를 참고하세요. CloudFormation과 함께 NetworkConfiguration 리소스를 사용하는 예시는 Amazon ECS용 CloudFormation 예시 템플릿 문서를 참고하세요.

생성된 ENI는 AWS Fargate에 의해 완전히 관리됩니다. 또한 Fargate에 권한을 부여하는 데 사용되는 관련 IAM 정책이 있습니다.

Fargate 플랫폼 버전 1.4.0 이상을 사용하는 태스크는 단일 ENI(태스크 ENI라고 함)를 받고, 모든 네트워크 트래픽은 VPC 내에서 그 ENI를 통해 흐릅니다. 이 트래픽은 VPC 플로우 로그에 기록됩니다. Fargate 플랫폼 버전 1.3.0 이하를 사용하는 태스크는 태스크 ENI 외에도 Fargate 소유 ENI(Fargate owned ENI)를 별도로 받으며, 이 ENI는 VPC 플로우 로그에 보이지 않는 일부 네트워크 트래픽에 사용됩니다.

다음 표는 각 플랫폼 버전의 네트워크 트래픽 동작과 필요한 IAM 정책을 설명합니다.

작업 Linux 1.3.0 이하 트래픽 흐름 Linux 1.4.0 트래픽 흐름 Windows 1.0.0 트래픽 흐름 IAM 권한
Amazon ECR 로그인 자격 증명 검색 Fargate 소유 ENI 태스크 ENI 태스크 ENI 태스크 실행 IAM 역할
이미지 풀 태스크 ENI 태스크 ENI 태스크 ENI 태스크 실행 IAM 역할
로그 드라이버를 통한 로그 전송 태스크 ENI 태스크 ENI 태스크 ENI 태스크 실행 IAM 역할
Amazon ECS용 FireLens를 통한 로그 전송 태스크 ENI 태스크 ENI 태스크 ENI 태스크 IAM 역할
Secrets Manager 또는 Systems Manager에서 비밀 검색 Fargate 소유 ENI 태스크 ENI 태스크 ENI 태스크 실행 IAM 역할
Amazon EFS 파일 시스템 트래픽 사용 불가 태스크 ENI 태스크 ENI 태스크 IAM 역할
애플리케이션 트래픽 태스크 ENI 태스크 ENI 태스크 ENI 태스크 IAM 역할

고려 사항 (Considerations)

태스크 네트워킹을 사용할 때 다음을 고려하세요.

  • Amazon ECS가 사용자를 대신해 다른 AWS 서비스를 호출할 수 있는 권한을 제공하려면 Amazon ECS 서비스 연결 역할(service-linked role)이 필요합니다. 이 역할은 클러스터를 만들거나 AWS Management Console에서 서비스를 생성 또는 업데이트할 때 자동으로 생성됩니다. 자세한 내용은 Amazon ECS용 서비스 연결 역할 사용 문서를 참고하세요. 다음 AWS CLI 명령으로 서비스 연결 역할을 만들 수도 있습니다:
aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • VPC에서 enableDnsHostnames와 enableDnsSupport 옵션이 모두 활성화되어 있으면 Amazon ECS는 태스크의 호스트 이름을 Amazon 제공 DNS 호스트 이름으로 채웁니다. 이 옵션이 활성화되어 있지 않으면 태스크의 DNS 호스트 이름은 임의의 호스트 이름으로 설정됩니다.

더 알아보기 (Learn more)

  • Fargate 태스크 네트워킹과 AWS PrivateLink에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.