[AWS] VPC Endpoint : Private 네트워크에서 AWS 서비스 접근

AWS에서 S3, DynamoDB 등의 대부분의 서비스에 접근할 때, 기본적으로 퍼블릭 인터넷을 거쳐야 한다.
하지만 VPC Endpoint를 사용하면 퍼블릭 IP 없이 AWS 내부망을 통해 통신이 가능하므로 보안성과 성능을 높일 수 있다.
이번 포스팅에서는 VPC Endpoint의 개념과 활용 방법을 정리해 보려고 한다.
VPC Endpoint
외부 인터넷과 통신이 차단된 Private Subnet에서 AWS 서비스에 접근하려면 두 가지 방식을 사용할 수 있다.
- 첫번째로 우회적으로 NAT Gateway를 경유하여 외부 퍼블릿 인터넷을 통해서 접근하는 방식이다.
- 두번째로는 VPC Endpoint를 활용하여 내부망을 통해서 접근하는 방식이다.
- VPC Endpoint는 외부 Public 인터넷을 거치지 않고 AWS 서비스에 연결시켜주는 리소스이다. 즉 AWS 서비스에 비공개로 연결 가능.
- VPC 인스턴스는 서비스 리소스와 통신할 때 Endpoint를 매개체로 통신하기 때문에 Public Address를 필요로 하지 않음
- Endpoint 리소스는 비용이 청구되므로 유의하자.
Interface Endpoint

- ENI(Elastic Network Interface) 기반으로 서비스와 연결되는 방식이기 때문에 Public IP를 사용할 필요가 없다.
- Interface Endpoint를 생성하면, VPC의 서브넷에 ENI가 자동으로 생성된다.
- ENI는 해당 서브넷의 프라이빗 IP 주소를 할당받아 특정 AWS 서비스와의 통신을 처리한다.
- VPC의 인스턴스는 해당 ENI를 대상으로 요청을 보내고, 이 요청은 ENI의 Private IP를 통해 AWS PrivateLink 기반으로 AWS 서비스와 통신하는 원리이다.
- 서브넷 단위 동작 → 엔드포인트가 위치할 서브넷 지정 필요
- VPC 내부에서 인터페이스 엔드포인트가 공유 리소스처럼 동작한다.
- 엔드포인트가 위치할 서브넷의 위치는 내부에 위치한 아무 서브넷이면 상관없다.
- 즉 같은 VPC에 위치한 Subnet A가 Subnet B의 인터페이스 엔드포인트를 사용하여 다른 서비스와 통신 가능
- 인터페이스 엔드포인트는 기본적으로 VPC 내 모든 서브넷에서 자동 적용되어 특정 AWS 서비스에 대한 트래픽을 자동으로 프라이빗 네트워크를 통해 전달한다.
- 엔드포인트 생성 시 VPC 내부에 Private DNS 레코드가 설정되어 AWS 서비스 도메인에 대한 DNS 응답으로 레코드에 의해서 엔드포인트의 ENI IP가 반환되는 것이 기본 원리이다.
- Private 서브넷 뿐만 아니라 Public 서브넷도 VPC Endpoint를 통해 Private한 접근 지원을 받을 수 있다.
- 보안그룹, 정책 지정 가능.
- 대부분의 AWS 서비스와의 통신을 지원한다.
Gateway Endpoint

- VPC 단위로 동작하는 게이트웨이의 종류 → 해당 VPC의 모든 서브넷이 사용 가능
- 라우팅 테이블의 Gateway Endpoint의 경로 매핑에 따라서 트래픽을 서비스와 매핑.
- 라우팅 테이블에 특정 서비스로 가는 목적지(Destination)를 엔드포인트의 대상 경로로 매핑한다.
- ex) S3로 가는 IP 대역의 트래픽을 Endpoint로 매핑하여 엔드포인트를 경유하여 통신할 수 있게 한다.
- 정책 적용 가능, 보안그룹 적용 불가능.
- S3 및 DynamoDB와 같은 일부 특정 AWS 서비스와의 통신을 지원한다.
VPC Endpoint 활용 방법
지금부터 Public Subnet과 Private Subnet이 AWS의 서비스인 S3와 SQS와 통신하는 과정을 비교해보고, 내부망을 통해 서비스와 통신할 수 있도록 설정해보려고 한다.
기본적으로 AWS의 서비스와 통신하는 방식은 두 가지가 있다고 했었다.
1. Public 인터넷을 통한 통신 방식 (IGW, NAT Gateway 등 활용)
2. VPC Endpoint로 Public 인터넷 없이 프라이빗하게 통신
우선적으로 Public Subnet과 Private Subnet 각각에서 퍼블릭 인터넷을 통해 접근이 가능한지를 확인해보자.
1. Private Subnet과 Public Subnet에 EC2 생성 및 권한 부여

- EC2 인스턴스에서 S3 및 SQS에 Access할 수 있는 권한을 부여하기 위해서 Role을 생성해주었다.


- Public Subnet과 Private Subnet에 EC2를 각각 생성해주자.

- EC2 인스턴스 IAM 프로파일로 방금 생성했던 Role을 부여해주자.
더불어 AWS S3와 SQS 서비스도 하나씩 생성해 주었다.
2. Public 인터넷을 통한 AWS 서비스 접근 시도


- 좌측은 Public Subnet에 위치한 EC2 인스턴스로 S3와 SQS에 인터넷 기반으로 접근이 가능하다.
- 우측은 Private Subnet에 위치한 EC2 인스턴스로 인터넷 연결이 없기 때문에 (NAT Gateway, IGW 없음) 서비스에 인터넷 기반으로 접근이 불가능하다.
3. Gateway Endpoint 설정 (S3 접근)
Gateway Endpoint를 활용하여 S3와 Private하게 연결할 수 있도록 설정해보자.

- 엔드포인트의 서비스 유형에는 Gateway와 Interface 두 종류가 있는 것을 확인할 수 있다.
- 우리는 S3와 연결시켜주는 Gateway Endpoint를 설정할 것이기 때문에 s3 gateway 서비스를 선택해주었다.


- 해당 게이트웨이를 통해 Private하게 S3와 통신할 서브넷들의 라우팅 테이블에 Gateway Endpoint의 경로를 매핑시켜주어야 한다. 우리는 Private Subnet의 라우팅 테이블을 편집해 줄 것이다.
- 라우팅 규칙 추가 : pl-61a54008(S3로 가는 경로) → vpce-0347562b3aca27a5d(Gateway Endpoint로 트래픽 매핑)
- 해당 서브넷에서 S3 대역의 주소로 접근하려고 한다면 Gateway Endpoint로 트래픽을 전송하여 매개체로 삼아서 S3와 통신하게 된다.
4. Interface Endpoint 설정 (SQS 접근)
이번에는 Interface Endpoint를 활용하여 SQS와 Private하게 연결할 수 있도록 설정해보자.
참고로 SQS는 인터페이스 엔드포인트만 지원되는 AWS 서비스 중 하나이다.


- 마찬가지로 SQS Interface 유형의 엔드포인드를 생성해보자.
- 서브넷 지정 : 앞에서 언급했듯이 인터페이스 엔드포인트는 VPC 내부의 모든 서브넷에서 자동으로 사용된다고 하였다. 즉 VPC의 특정 서브넷 1개에 엔드포인트를 생성하면 VPC 내부의 모든 서브넷에서 사용 가능하다.
- 그렇지만 항상 AWS 측의 Best Practice는 고가용성을 위해서 여러 AZ에 걸쳐서 배포하는 것임을 고려하자.
- 또한 게이트웨이 엔드포인트와 달리 라우팅 테이블을 별도로 설정할 필요가 없다.
5. 결과 확인

- S3 접근을 위한 VPC 수준의 Gateway Endpoint 설정을 통해 통신이 가능해졌다.
- SQS 접근을 위해 서브넷 수준의 Interface Endpoint 설정을 통해 통신이 가능해졌다.
References
https://docs.aws.amazon.com/
docs.aws.amazon.com
쉽게 설명하는 AWS 기초 강의 강의 | AWS 강의실 - 인프런
AWS 강의실 | AWS 여정을 시작하기 위해 가장 필요한 내용을 담았습니다., 안녕하세요. AWS 강의실입니다.AWS 공식 커뮤니티 빌더이자 2만명의 구독자를 보유한 AWS Only 강의 유튜브의 경험으로 AWS를
www.inflearn.com
'Backend > AWS' 카테고리의 다른 글
[AWS] VPC : 네트워크 연결 방법과 VPC Peering (0) | 2025.02.10 |
---|---|
[AWS] Private EC2 연결 방법 : Bastion Host & SSM & Instance Connect Endpoint (0) | 2025.02.04 |
[AWS] VPC : 보안 그룹과 NACL(Network Access Control List) (0) | 2025.02.04 |
[AWS] VPC : 서브넷과 구성 요소 (Public/Private Subnet, IGW, NAT Gateway) (0) | 2025.02.04 |
[AWS] ELB : 개념 및 구성 요소 (+ EC2 Autoscaling X ALB 적용) (0) | 2025.01.15 |