ECS Fargate 서비스 이용시 VPC Endpoint를 이용하여 아키텍처를 완성함.
Private 네트워크에 있는 인스턴스에서 VPC 외부의 AWS 서비스와 통신이 필요한 경우 사용한다.
ECS Fargate를 사용할 경우 서비스를 이용하여 태스크 생성시 ECR에 있는 이미지를 Pull 하기 위해서 VPC 외부의 서비스에 접근 할 수 있는 환경이 필요하다.
ECS에서 필요한 외부 서비스는 기본적으로 아래와 같다.
엔드포인트가 생성되는 순서는 중요하지 않다.
플랫폼 버전 1.4.0
이상을 사용하여 Fargate에서 호스팅되는 Amazon ECS 작업은 Amazon ECR VPC 엔드포인트와 Amazon S3 게이트웨이 엔드포인트가 모두 필요합니다.
com.amazonaws.
region
.ecr.dkr
com.amazonaws.region
.ecr.api
Amazon ECR은 Amazon S3를 사용하여 이미지 계층을 저장하기 때문에 게이트웨이 엔드포인트가 필요
com.amazonaws.
region
.s3
# S3 버킷에 ECR 작업에 필요한 최소권한 부여하는 예제
{
"Statement": [
{
"Sid": "Access-to-specific-bucket-only",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::prod-region-starport-layer-bucket/*"]
}
]
}
인터넷 게이트웨이 없이 VPC를 사용하고 awslogs
로그 드라이버를 사용하여 로그 정보를 CloudWatch Logs로 전송하는 Fargate 시작 유형을 사용하는 Amazon ECS 작업의 경우, CloudWatch Logs에 대한 인터페이스 VPC 엔드포인트를 생성한다.
com.amazonaws.
region
.logs
EndPoint 서비스에 필요한 VPC EndPoint 유형을 생성해야 한다.
NAT 게이트웨이는 NAT(네트워크 주소 변환) 서비스 입니다.
프라이빗 서브넷의 인스턴스가 VPC 외부의 서비스에 연결할 수 있지만 외부 서비스에서 이러한 인스턴스와의 연결을 시작할 수 없도록 NAT 게이트웨이를 사용할 수 있습니다.
NAT 게이트웨이를 만들 때 다음 연결 유형 중 하나를 지정합니다.
퍼블릭
프라이빗 서브넷의 인스턴스는 퍼블릭 NAT 게이트웨이를 통해 인터넷에 연결할 수 있지만 인터넷에서 원치 않는 인바운드 연결을 수신할 수 없습니다. 퍼블릭 서브넷에서 퍼블릭 NAT 게이트웨이를 생성하고 생성 시 탄력적 IP 주소를 NAT 게이트웨이와 연결해야 합니다. 트래픽을 NAT 게이트웨이에서 VPC용 인터넷 게이트웨이로 라우팅합니다. 또는 퍼블릭 NAT 게이트웨이를 사용하여 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다. 이 경우 NAT 게이트웨이에서 Transit Gateway 또는 가상 프라이빗 게이트웨이를 통해 트래픽을 라우팅합니다.
프라이빗
프라이빗 서브넷의 인스턴스는 프라이빗 NAT 게이트웨이를 통해 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다. 트래픽을 NAT 게이트웨이에서 Transit Gateway 또는 가상 프라이빗 게이트웨이를 통해 트래픽을 라우팅할 수 있습니다. 탄력적 IP 주소를 프라이빗 NAT 게이트웨이에 연결할 수 없습니다. 프라이빗 NAT 게이트웨이를 사용하여 VPC에 인터넷 게이트웨이를 연결할 수 있지만 프라이빗 NAT 게이트웨이에서 인터넷 게이트웨이로 트래픽을 라우팅하는 경우 인터넷 게이트웨이가 트래픽을 삭제합니다.
💡 요금관련
- VPC Endpoint Interface는 PrivateLink의 요금에 따라 부과된다
- Gateway는 PrivateLink 요금이 적용되지 않으며 인스턴스의 데이터 처리량에 따라 요금이 부과된다.
아키텍처를 구성하기 전 VPC Endpoint와 NAT gateway의 비용을 계산해 보았다.
리전 - ap-northeast-2(서울) 기준
현재 아키텍처에서 S3는 Private 비용이 적용 되지 않지만, 요금의 추이를 간편하게 파악하기 위해 인터페이스 게이트웨이 하나로 산정하여 총 4ea의 VPC 엔드포인트를 사용하는 것으로 계산하였다.
100GB | 1TB | 1PB | |
---|---|---|---|
PrivateLink | 38.96 | 48.20 | 10227.96 |
NAT gateway | 48.95 | 103.49 | 60459.07 |
트래픽이 작을 경우 비용 산정에 큰 영향이 없지만 점점 트래픽이 많은 시스템에서 사용할 경우 비용차이가 기하급수적으로 늘어나는 것을 확인할 수 있었다.
100GB
1TB
1PB
1TB
1PB
AWS에서 서비스 운영시 Private 환경의 인스턴스가 VPC 외부의 AWS 서비스를 이용하고자 할때는 VPC 엔드포인트 사용을 고려하여 비용을 줄일 수 있다.