IT/Public Cloud

ECR의 VPC Endpoint 생성 및 연동 (feat. Private Link 와의 차이점)

엘티엘 2022. 4. 12. 18:46

VPC Endpont와 PrivateLink

VPC Endpoint

VPC 엔드포인트를 사용하면 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결을 사용할 필요 없이 가상 사설 클라우드(VPC)와 지원되는 서비스 간의 연결이 가능합니다. 따라서 VPC에서 연결할 수 있는 특정 API 엔드포인트, 사이트 및 서비스를 제어합니다.
VPC 엔드포인트는 가상 장치입니다. 수평 확장, 중복 및 고가용성 VPC 구성 요소입니다. 다음은 다양한 유형의 VPC 엔드포인트입니다. 지원되는 서비스에 필요한 유형의 VPC 엔드포인트를 생성합니다.
[출처] https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints.html

PrivateLink

AWS PrivateLink는 지원되는 AWS 서비스, 다른 AWS 계정에서 호스팅하는 서비스(VPC 엔드포인트 서비스) 및 지원되는 AWS Marketplace 파트너 서비스에 VPC를 비공개로 연결할 수 있는 가용성과 확장성이 뛰어난 기술입니다. 서비스와 통신하기 위해 인터넷 게이트웨이, NAT 장치, 퍼블릭 IP 주소, AWS Direct Connect 연결 또는 AWS Site-to-Site VPN 연결을 사용할 필요가 없습니다. 따라서 VPC에서 연결할 수 있는 특정 API 엔드포인트, 사이트 및 서비스를 제어합니다.
AWS PrivateLink에서 제공하는 자체 VPC 엔드포인트 서비스를 생성하고 다른 AWS 고객이 서비스에 액세스하도록 할 수 있습니다.
[출처] https://docs.aws.amazon.com/vpc/latest/privatelink/endpoint-services-overview.html
  • VPC Endpoint는 이름 그대로 Endpoint 이다. (서비스 진입점)
  • 예를 들어 vpcA 라는 VPC 내에 있는 EC2에서 VPC 밖에 있는 ECR에 (Regional 서비스)에 접근할때, vpcA 에 ECR에 대한 VPC Endpoint(서비스 진입점)를 생성할수 있다.
  • 이럴 경우 EC2 -> Internet -> ECR 으로 흐르던 트래픽이 EC2 -> VPC Endpint -> ECR 로 간다.
  • 외부망을 통하지 않기 때문에 outbound 트래픽 비용이 감소하고, 보안이나 성능적으로 우수하다.
  • PrivateLink는 연결을 위한 기술로서, VPC Endpoint -> ECR으로 데이터가 전달될때 PrivateLink를 통한다고 생각하면 된다.
  • 즉, PrivateLink는 AWS 내부망으로 트래픽 통신을 하는 기술로서, 사용자 입장에서는 VPC Endpoint를 생성하면 PrivateLink는 자동으로 구성된다고 생각하면 된다.

VPC Endpoint 유형

Endpoint 생성시 사진처럼 같이 Interface 및 Gateway 유형이 존재한다. 다만 사용자 입장에서는 지원되는 AWS 서비스가 다르다는 정도만 알고 있어도 사용에는 무리가 없다.

  • Gateway endpoint
    • 라우팅 테이블에서 트래픽을 Gateway Endpint 로 전달
    • S3, DynamoDB
    • Endpoint 생성시 Routing Table에 관련 내용이 추가
  • Interface Endpint
    • ENI 기반
    • DynamoDB 외 많은 서비스 지원 (링크 확인. S3은 둘다 지원)

VPC Endpoint 요금

서비스비용과 데이터 처리량 으로 이루어져 있다. 인터넷 outbound 비용(0.12$/GB)과 비교하면 1/10 정도이므로 구성의 불편함만 감수할 수 있다면 사용하지 않을 이유가 없다. (데이터 전송비용 정리)

ECR VPC Endpoint 생성 및 연동하기

ECR VPC Endpoint를 생성해보자. 진행 순서는 아래와 같다

  1. ECR과 연동되는 EC2를 생성
  2. ECR VPC Endpoint 생성
  3. EC2 와 VPC Endpoint 연동 확인

1) ECR과 연동되는 EC2를 생성

이전글을 참고한다.

2) ECR VPC Endpoint 생성

공식문서를 참고한다. 간단하기 정리하면 다음과 같다

  1. VPC -> Endpoints -> Create endpoint -> AWS services 선택
  2. 아래 Service 선택 (동시선택은 불가. 각각 생성 필요)
    1. com.amazonaws.region.ecr.api
    2. com.amazonaws.region.ecr.dkr
  3. VPC, Subnet, Security Group 선택 (443 포트 필요)

3) EC2 와 VPC Endpoint 연동 확인

aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com

여기까지 과정을 마치고 위의 커맨드를 실행시키면 아래 사진처럼 Login Succeeded를 확인할수 있다. 

여기까지 봤을때는 진짜 VPC Endpoint 를 사용하는지 의문이 들수 있다. (사용자 입장에서는 똑같기 때문에) VPC Endpoint의 Security Group 수정을 통해서 VPC Endpoint를 사용하는지 확인해보자.

VPC Endpoint의 Security Group을 확인해서 outbound 443 포트를 삭제해보자. 동일한 명령을 실행하면 아래와 같이 에러가 발생함을 확인할 수 있다.

다시 outbound 443 포트를 추가하면 Login Succeeded 를 확인할수 있다.

[참고] VPC Endpoint Service

VPC에서 자체 애플리케이션을 생성하고 AWS PrivateLink 구동 서비스(엔드포인트 서비스 라고도 함)로서 구성할 수 있습니다. 기타 AWS 보안 주체는 서비스 유형에 따라 인터페이스 VPC 엔드포인트 또는 Gateway Load Balancer 엔드포인트를 사용하여 VPC에서 엔드포인트 서비스로 이어지는 연결을 생성할 수 있습니다. 서비스 공급자인 경우 서비스에 연결을 생성하는 AWS 보안 주체는 서비스 소비자가 됩니다.
[출처] https://docs.aws.amazon.com/ko_kr/vpc/latest/privatelink/endpoint-service.html

AWS 서비스가 아닌 자체 구축한 서비스를 대상으로 VPC Endpoint를 생성이 가능하다.

반응형