관리 메뉴

밤 늦게까지 여는 카페

[Amazon ECS & 비용 절감] Fargate 태스크 public ip 없이 사용하기 - IPv4 주소 1개당 월 3.6달러 무시하다가는 돈 줄줄 샙니다... 본문

aws

[Amazon ECS & 비용 절감] Fargate 태스크 public ip 없이 사용하기 - IPv4 주소 1개당 월 3.6달러 무시하다가는 돈 줄줄 샙니다...

Jㅐ둥이 2024. 8. 25. 02:36
반응형

안녕하세요. 오늘 저녁, 집 들어오는 길에 문득 날씨가 선선해졌음을 느꼈습니다.

원래 밤에도 열대야 때문에 더웠는데 이제 여름도 끝나가는 걸까요?

 

오늘은 ECS Fargate 태스크를 public ip 없이 사용하는 방법을 기록하려고 합니다.

단순한 작업이었지만 다른 일들에 밀리다 보니 이제야 처리하게 되었습니다...ㅎ


0. ECS Fargate 태스크를 public ip로 사용하면 어떤 문제가 있나요?

글 제목에도 적혀있지만 public ip를 사용하는 태스크 개수 당 월 3.6달러씩 비용이 지불됩니다.

 

AWS는 기존에 무료로 제공해주던 퍼블릭 IPv4를 2024년 2월부터 시간당 0.005 달러를 부과하도록 요금 정책을 바꿨습니다.

AWS public ip 가격표

 

서비스를 개발하다보면 서버 인스턴스 수가 많아지기 마련인데

어느 순간 보면 무시하지 못할 비용이 퍼블릭 IPv4 사용으로 지출되고 있을 겁니다.

 

AWS 콘솔의 Amazon VPC IP Address Manager 서비스에서 현재 사용 중인 퍼블릭 IP에 대한 통계를 볼 수 있으므로 주기적으로 모니터링하는 것을 권장드립니다.

 

1. ECS Fargate 태스크의 퍼블릭 IP 사용 중단이 어렵나요?

퍼블릭 IP를 사용하지 않는 것 자체는 쉽습니다.

ECS Fargate에서 서비스를 생성할 때 네트워킹 섹션에서 퍼블릭 IP를 사용하지 않도록 체크하기만 하면 됩니다.

저 부분 클릭만 하면 퍼블릭 IP를 사용하지 않게 됩니다!

 

문제는 그 이후에 발생합니다.

 

ECS Fargate 태스크가 퍼블릭 IP를 사용하지 않으면 VPC 외부에 있는 ECR에 접근하지 못하게 됩니다.

The task can’t pull the image. Check your network configuration 에러 메시지를 출력하면서 태스크가 실행되지 못합니다 ㅜㅠ

퍼블릭 IP가 없는 태스크는 VPC Endpoint가 없으면 ECR에 접근할 수 없습니다 ㅜ

 

이 문제를 해결하기 위해 필요한 기능이 VPC Endpoint입니다.

VPC Endpoint를 사용하면 VPC 내 프라이빗 IP만 가지고 있는 인스턴스들도 VPC 외부 서비스들과 통신이 가능합니다!

 

2. ECS Fargate 태스크가 ECR에 접근할 수 있는 VPC Endpoint 설정 방법을 알려주세요

ECS Fargate 태스크가 ECR에 접근하려면 다음 3가지 VPC Endpoint가 필요합니다.

  • ecr.api
  • ecr.dkr
  • s3

참고: https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/vpc-endpoints.html

각 VPC Endpoint 생성하는 방법을 상세히 작성하겠습니다.

 

※ 주의
ECS Fargate 태스크를 퍼블릭 IP 없이 사용할 것이므로 프라이빗 서브넷에 위치시켜야 합니다.

서비스를 생성할 때, 서브넷을 잘 선택하셔야 해요!

2.1. ecr.api, ecr.dkr VPC Endpoint 생성하는 방법

1. AWS 콘솔에서 VPC 서비스에 접속하면 좌측 탭에서 엔드포인트를 클릭합니다.

엔드포인트 서비스 페이지로 접속

2. 엔드포인트 서비스 페이지에 접속했으면 화면의 우측 상단에 위치한 엔드포인트 생성 버튼을 클릭합니다.

엔드포인트 생성 버튼 클릭!

 

3. 그러면 아래 그림과 같은 페이지로 이동됩니다. 당황하지 말고 서비스 검색 필드에 ecr을 입력합니다.

서비스 검색 필드에 ecr 입력!

4. 그러면 ecr.api, ecr.dkr 2개 다 검색될 텐데 한 번에 하나의 VPC Endpoint만 만들 수 있어서 이번에는 ecr.api를 선택하겠습니다.

  • ecr.dkr도 동일한 과정으로 만들어주면 됩니다.

ecr.api 선택

 

5. 다음으로는 서버 인스턴스가 속해있는 VPC를 선택합니다.

vpc 선택

6. VPC를 선택하면 서브넷과 보안 그룹을 선택하고 정책을 작성해줘야 합니다.

  • 서브넷은 서버 인스턴스가 속해있는 서브넷을 선택합니다.
  • 보안 그룹은 서버 인스턴스가 이미 사용하고 있는 것을 선택해도 되고, VPC Endpoint용 보안 그룹을 새롭게 생성하고 서버 인스턴스와 이번에 생성할 VPC Endpoint에 설정해 둬도 됩니다.
  • 정책은 그냥 전체 액세스 선택했습니다;;

VPC 선택한 다음에 설정해야 하는 서브넷, 보안 그룹, 정책

7. 끝!

 

2.2. S3 VPC Endpoint 생성하는 방법

1. 이번에는 서비스 검색 필드에 s3을 입력합니다.

서비스 검색 필드에 s3 입력!

2. 여러 서비스가 나와도 당황하지 않고 유형이 Gateway인 서비스를 클릭합니다.

유형이 Gateway인 서비스 클릭!

3. 다음으로는 서버 인스턴스가 속해있는 VPC를 선택합니다.

vpc 선택

4. VPC를 선택하면 라우팅 테이블을 선택하고, 정책을 작성해야 합니다.

  • 서버 인스턴스가 속한 서브넷을 포함한 라우팅 테이블을 선택합니다.
  • 역시 이번에도 정책은 전체 액세스를 선택합니다;;

VPC를 선택한 다음에 설정해야 하는 라우팅 테이블과 정책

5. 끝!

 

🎁다른 Amazon ECS 포스팅들 🎁

 

반응형