AWS

ECS Network Mode, ENI, VPC Endpoint 정리

recent0 2025. 3. 29. 22:01

0. 서론


최근 모니터링 관련해서 알아보고 구축하는 도중 다음과 같은 개념들에 대해 알아보았습니다.

  • ECS NetworkMode
  • ENI, VPC Endpoint
  • ECS의 Service Discovery, Service Connect 

그래서 해당 개념들을 그냥 넘기지말고 한번 정리하면 좋겠다고 생각하여 ECS Networkmode, EC2 ENI, VPC Endpoint가 무엇인지에 대해서 알아보고 정리해보고자 합니다.

 

1. AWS VPC Endpoint


1.1 VPC Endpoint란?

  • AWS VPC Endpoint는 인터넷을 거치지 않고 VPC 내부에서 AWS 서비스 연결을 해주는 서비스

1.2 Gateway Endpoint

Gateway Endpoint 역할

  • Internet Gateway, NAT Gateway 없이 S3, DynamoDB에 연결할 수 있음

Gateway Endpoint 사용하기 전

  • VPC Endpoint를 사용하기 전에는 퍼블릿 서브넷의 인스턴스에서 S3, DynamoDB로의 트래픽은 VPC의 인터넷 게이트웨이를 거쳐 서비스로 라우팅
  • 기본적으로 프라이빗 서브넷에는 인터넷 게이트웨이에 대한 라우팅이 없음
  • 프라이빗 서브넷 인스턴스에서 S3, DyynamoDB로 트래픽을 보내기 위해서는 퍼블릭 서브넷에 NAT을 추가하고 프라이빗 서브넷의 트래픽을 NAT으로 라우팅 해야 함.
  • 추가로 알아두면 좋은 점은 S3, DynamoDB로의 트래픽은 인터넷 게이트웨이를 통과하지만 AWS 네트워크를 벗어나지 않음

Gateway Endpoint 사용하기 후

  • 아래는 VPC에서 S3 또는 DynamoDB로의 트래픽이 Gateway Endpoint로 라우팅 되는 예시
  • 각 서브넷 라우팅 테이블에는 서비스로 전송되는 트래픽을 서비스의 접두사 목록을 사용하여 게이트웨이 엔드포인트로 보내는 라우팅이 있어야 함(엔드포인트 생성 시 자동으로 추가)

Gateway Endpoint 활성화

  • 아래와 같이 AWS 서비스 탭에서 S3를 검색하여 Gateway 유형을 사용

1.3 Interface Endpoint

Interface Endpoint 역할

  • VPC 내에서 AWS 서비스와 연결하기 위한 방법
  • AWS PrivateLink를 사용하여 Internet Gateway, NAT Gateway 없이도 AWS 서비스에 접근 가능
  • ENI(Elasstic Network Interface)를 VPC 내의 서브넷에 생성하여 연결
  • ECR, ECS, SNS, SQS 등 여러 가지 서비스를 지원

Interface Endpoint 동작 과정

  1. VPC 내 특정 서브넷에 ENI(Elastic Network Interface)를 생성
  2. 해당 ENI가 AWS 서비스 또는 다른 VPC에 있는 PrivateLink 서비스와 연결
  3. EC2, Lambda, ECS 등의 AWS 리소스가 이 ENI를 통해 서비스에 연결

Interface Endpoint 활용 예시

출처: https://cloudviz.io/blog/aws-vpc-interface-endpoint-vs-gateway-endpoint

 

2. ENI, ENI Trunking


 

2.1 ENI

ENI란?

  • VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소
  • EC2 인스턴스가 ENI를 통해 VPC 네트워크에 연결됨
  • ENI 단위로 보안 그룹(Security Group) 적용 가능
  • 인스턴스 생성 시 기본 네트워크 인터페이스가 IP 주소 등의 정보 할당과 함께 생성됨
  • 하나의 EC2에 여러 개의 ENI를 연결해 다중 네트워크 인터페이스 사용 가능

ENI 예시

  • 아래는 VPC 내의 퍼블릭 서브넷에 위치한 EC2 인스턴스에 액세스 하는 시나리오 

 

2.2 ENI Trunking

ENI Trunking이란?

  • EC2 인스턴스마다 ENI 개수에 제한이 있는데, 인스턴스 타입이나 패밀리에 따라 사용할 수 있는 ENI 개수가 다름
    ex) t3a.small을 사용했을 때 ENI를 2개만 구성할 수 있는 것으로 확인
  • ECS awsvpc 모드를 사용할 때 Task마다 하나의 ENI를 가지기 때문에 ENI 개수 제한을 피하기 위해 사용하는 기법

ENI Trunking 사용

ENI Trunking을 사용한 경우

  • 아래와 같이 ENI 하나에 ECS 테스크가 여러 개 실행될 수 있음을 확인

3. ECS NetworkMode


ecs networkmode에는 bridge, awsvpc, host 세 종류가 있습니다. 그중 bridge에서 awsvpc로 전환하다 보니 각각의 특징은 무엇이 있는지 정리하고자 합니다.

3.1 bridge 모드

bridge 모드 특징

  • Docker의 bridge 네트워크 드라이버를 사용하여 컨테이너와 호스트 간 통신을 설정
  • 컨테이너는 bridge 네트워크를 통해 EC2 인스턴스의 IP를 사용하여 외부와 연결

bridge 정적 포트 매핑

  • 하나의 컨테이너 포트를 EC2 인스턴스의 특정 포트에 고정으로 매핑하는 방식
  • 하나의 ECS Service에서 동일한 성격의 Task를 2개 이상 실행시키는 경우, 중복 포트 사용으로 문제가 발생
  • 아래는 정적 포트 사용을 위한 Task Definition 예시
"portMappings": [
  {
    "containerPort": 8080,
    "hostPort": 8080
    "protocol": "tcp"
  }
]

bridge 정적 포트 사용 예시

  • 고정된 호스트 포트를 사용해 컨테이너에 매핑되고 있는 것을 확인
  • 아래는 동일한 호스트 포트를 사용할 수 없기 때문에 인스턴스에 하나만 80 포트번호를 사용하고 있음을 보여줌

bridge 동적 포트 매핑

  • 컨테이너 포트는 고정하고 EC2 인스턴스의 호스트 포트는 동적으로 할당하는 방식
  • 아래는 bridge 동적 포트 매핑 시 Task Definition 일부
"portMappings": [
  {
    "containerPort": 8080,
    "hostPort": 0, // 0으로 설정해서 동적 포트 매핑
    "protocol": "tcp"
  }
]

bridge 동적 포트 매핑인 경우

  • 동적 포트 매핑을 통해 내부 컨테이너와 통신할 수 있음
  • 이를 통해 각각 다른 호스트 포트를 사용하여 하나의 인스턴스에 동일한 성격의 컨테이너를 여러 개 실행시킬 수 있음

3.2 awsvpc 모드

awsvpc 특징

  • awsvpc 모드는 각 Task에 하나의 ENI와 IPv4 주소를 할당
  • networkmode 중 가장 높은 네트워크 격리단계와 보안을 제공
  • 같은 테스크 내에 속한 컨테이너는 localhost 인터페이스로 통신이 가능
  • 동일한 포트를 사용하여 같은 테스크를 여러개 사용할 수 있음 

awsvpc 모드 예시

    • EC2 인스턴스 하나에 EC2 인스턴스를 위한 ENI, 테스크 2개를 사용해서 ENI 2개가 추가로 구성
    • 각각의 ENI는 고유의 IPv4 주소를 가지도록 구성되어 있음
    • 아래는 요청을 보냈을 때 포트에 맞게끔 트래픽을 라우팅 하는 예시

 

4. 정리


이렇게 VPC Endpoint, ECS Networkmode의 종류, EC2 ENI 및 ENI Trunking에 대해서 알아보았습니다. 이 내용을 바탕으로 ECS Service Connect, ECS Service Discovery를 사용해서 모니터링을 구축했는데 다음 글에 이어서 다루어보도록 하겠습니다.

 

읽어주셔서 감사합니다.

 

 

Ref)

https://docs.aws.amazon.com/ko_kr/vpc/latest/privatelink/gateway-endpoints.html

https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html

https://cloudest.oopy.io/posting/107

https://dev.classmethod.jp/articles/amazon-vpc-eni-deep-dive/

'AWS' 카테고리의 다른 글

ECS Service Discovery, CloudMap, Prometheus  (0) 2025.04.13
분산환경에서 SQS 리스너 서버 고려점  (0) 2025.02.01
AWS ECS 넓게 펼쳐보기  (2) 2024.11.24
AWS Lambda Java With SnapStart  (2) 2024.06.24
Route 53, DNS 그리고 레코드  (2) 2024.05.30