home
SAA-C03

[network] VPC 엔드포인트 & PrivateLink

S3 한 번 부르자고 트래픽을 인터넷까지 내보내야 할까요? 그럴 필요 없이, 사설망 안에서 조용히 연결하는 방법입니다.

One-Line Summary

VPC EndpointVPC를 지원되는 AWS 서비스(또는 다른 사람의 엔드포인트 서비스)에 인터넷·NAT·IGW·VPN을 거치지 않고 AWS 사설망 내부로만 붙여주는 사설 연결 통로다. 종류는 두 가지 — Gateway Endpoint(S3·DynamoDB 전용, 라우트 테이블에 경로만 추가, 무료)와 Interface Endpoint(대부분의 다른 서비스용, 서브넷에 사설 IP를 가진 ENI 생성, 유료). Interface Endpoint의 기반 기술이 AWS PrivateLink이며, 이걸로 내 서비스(NLB 뒤)를 다른 VPC/고객에게 사설로 노출할 수도 있다.

Why It Exists

프라이빗 서브넷의 서버가 S3나 다른 AWS 서비스(SQS, KMS, Secrets Manager 등)를 호출하려면, 이 서비스들은 원래 공용(퍼블릭) 엔드포인트로 노출돼 있어서 트래픽이 IGW → NAT를 거쳐 인터넷을 한 번 나갔다 들어와야 한다. 이는 (1) NAT 데이터 처리 비용이 들고, (2) 트래픽이 AWS 사설망을 벗어나 보안·규정상 불편하며, (3) 인터넷 경로가 없는 완전 격리 서브넷에서는 아예 접근이 불가능하다.

VPC Endpoint가 이 문제를 해결한다.

[Endpoint 없이 - S3 호출]
Private EC2 ─► NAT Gateway ─► IGW ─► 인터넷 ─► S3 공용 엔드포인트
   └ NAT 데이터 요금 발생 + 트래픽이 AWS 밖으로 나감

[VPC Endpoint 경유 - S3 호출]
Private EC2 ─► (라우트 or ENI) ─► S3
   └ 인터넷/NAT/IGW 안 거침, 트래픽이 AWS 사설망 안에만 머무름

시험 감각:

"프라이빗 서브넷에서 AWS 서비스에 접근하되 인터넷/NAT/IGW 안 거치고 사설망으로만" = VPC Endpoint.

Abbreviations

약어풀네임의미
VPCEVPC EndpointVPC를 AWS 서비스에 사설로 연결하는 통로
Gateway EndpointGateway VPC EndpointS3·DynamoDB 전용, 라우트 테이블 경로 방식
Interface EndpointInterface VPC EndpointENI 기반, PrivateLink로 대부분 서비스 지원
PrivateLinkAWS PrivateLink서비스를 사설로 노출/소비하는 기반 기술
ENIElastic Network InterfaceInterface Endpoint가 서브넷에 만드는 사설 IP 네트워크 인터페이스
Endpoint ServiceVPC Endpoint Service내가 PrivateLink로 노출하는 서비스(NLB 뒤)
NLBNetwork Load BalancerEndpoint Service가 반드시 앞단에 두는 로드밸런서
Prefix ListManaged Prefix ListS3/DynamoDB 대역을 나타내는 라우트 대상(pl-xxxx)

두 종류의 엔드포인트 — 큰 그림부터

VPC Endpoint는 딱 두 종류뿐이고, 시험은 거의 이 둘을 구분하게 만든다.

구분Gateway EndpointInterface Endpoint (PrivateLink)
지원 서비스S3, DynamoDB 딱 둘그 외 대부분의 AWS 서비스 + 커스텀/파트너 서비스
동작 방식라우트 테이블에 경로 추가(prefix list 대상)서브넷에 ENI 생성(사설 IP 부여)
접근 방식라우트로 자동 유도ENI의 사설 IP / Private DNS 이름으로 호출
비용무료시간당 + GB당 과금
온프렘/피어링 VPC 접근불가 (라우트라 VPC 밖으로 못 나감)가능 (ENI를 향해 붙일 수 있음)
보안 제어라우트 테이블 + 엔드포인트 정책보안 그룹 + 엔드포인트 정책
범위Regional (여러 AZ 라우트에 붙임)AZ별 ENI (다중 AZ 권장)

한 줄 암기: S3·DynamoDB만 Gateway(무료, 라우트), 나머지 전부 Interface(유료, ENI).

Gateway Endpoint — S3와 DynamoDB 전용 (빈출)

Gateway Endpoint는 오직 S3와 DynamoDB에만 쓴다. 방식은 라우트 테이블에 "S3/DynamoDB로 가는 트래픽은 이 엔드포인트로"라는 경로 한 줄을 넣는 것이다. 이때 목적지는 IP 대역을 일일이 쓰지 않고 AWS가 관리하는 **prefix list(pl-xxxx)**로 표현한다.

┌─ VPC ──────────────┐
│ private subnet     │
│ EC2 (no public IP) │
└────────────────────┘
         │  S3 API 호출
         ▼
┌──────────────────┐
│ Gateway Endpoint │
└──────────────────┘
         │  route: pl-S3 ─► vpce
         ▼  (AWS 사설망 · NAT/IGW 미경유)
    Amazon S3
항목내용
대상 서비스S3, DynamoDB (이 둘만, 다른 서비스 시도는 오답)
붙이는 곳라우트 테이블에 엔드포인트를 연결 → 자동으로 prefix list 경로 생성
라우트 형태Destination: pl-xxxx(S3 대역)Target: vpce-xxxx
비용완전 무료 (시간·데이터 요금 없음)
보안ENI가 없으므로 보안 그룹 적용 안 됨, 대신 엔드포인트 정책으로 제어
한계라우트 기반이라 온프레미스·피어링 VPC에서는 이 엔드포인트를 못 씀

시험 감각: "프라이빗 서브넷에서 S3로 대량 전송 중인데 NAT 데이터 처리 비용이 크다" = S3 Gateway Endpoint로 우회(무료 + NAT 회피). NAT Gateway 노트의 비용 절감 포인트와 직결된다. 라우트가 생기는 원리는 Route Table의 prefix list 대상 참고.

Interface Endpoint — PrivateLink 기반 ENI 방식 (빈출)

S3·DynamoDB를 제외한 거의 모든 AWS 서비스(SQS, SNS, KMS, Secrets Manager, Systems Manager, ECR, CloudWatch, API Gateway 등)와 커스텀/파트너 서비스는 Interface Endpoint로 붙인다. 이 방식은 지정한 서브넷에 사설 IP를 가진 ENI를 만들고, 그 ENI가 해당 서비스로 가는 사설 통로가 된다. 이 ENI 기반 사설 연결 기술이 곧 AWS PrivateLink다.

[Private Subnet AZ-a] EC2
   │  예: sqs.ap-northeast-2.amazonaws.com 호출
   ▼  (Private DNS가 이 이름을 ENI 사설 IP로 해석)
Interface Endpoint ENI (사설 IP, 보안그룹 적용)
   ▼  (PrivateLink 사설 통로)
Amazon SQS   (인터넷 안 거침)
항목내용
대상 서비스S3·DynamoDB 외 대부분의 AWS 서비스 + 커스텀/파트너 서비스
만들어지는 것지정 서브넷마다 ENI(사설 IP) — 다중 AZ면 AZ별로 생성 권장
호출 방식ENI 사설 IP, 또는 Private DNS 켜면 서비스의 원래 DNS 이름 그대로 사용
비용엔드포인트 시간당 + 처리 데이터 GB당 과금
보안ENI에 보안 그룹 부착(인바운드 443 허용 등) + 엔드포인트 정책
온프렘/피어링 접근가능 — VPN/DX/피어링으로 들어온 트래픽이 ENI를 향해 붙을 수 있음

Private DNS를 켜면 sqs.ap-northeast-2.amazonaws.com 같은 서비스의 기본 도메인이 자동으로 엔드포인트 ENI의 사설 IP로 해석된다. 그래서 애플리케이션 코드나 SDK 설정을 바꾸지 않아도 트래픽이 사설 경로로 흐른다.

시험 감각: S3·DynamoDB가 아닌 AWS 서비스를 "인터넷 안 거치고 프라이빗하게 접근" = Interface Endpoint(PrivateLink). "온프레미스에서 이 서비스에 사설로 접근"도 Interface Endpoint(Gateway는 온프렘 불가).

AWS PrivateLink — 내 서비스를 남에게 사설로 노출 (빈출)

PrivateLink는 단순히 AWS 서비스를 소비하는 것뿐 아니라, 내가 만든 서비스를 다른 VPC/다른 계정/고객에게 사설로 제공하는 데도 쓴다. 이때 제공자(provider)는 서비스를 NLB 뒤에 두고 Endpoint Service로 등록하고, 소비자(consumer)는 그 Endpoint Service를 향해 Interface Endpoint를 만들어 붙는다.

[Provider VPC]                          [Consumer VPC]
서비스(EC2/컨테이너)
   │
   ▼
Network Load Balancer (NLB)  ◄────────  Interface Endpoint (ENI, 사설 IP)
   │                          PrivateLink        ▲
   └─ Endpoint Service 로 등록                    │
                                          Consumer 앱이 ENI로 호출
   (VPC 피어링 없음, 인터넷 노출 없음, CIDR 겹쳐도 무관)
항목내용
제공자 필수 구성서비스 앞단에 NLB(또는 GWLB) → Endpoint Service 생성
소비자 구성그 Endpoint Service로 Interface Endpoint 생성 → 승인(acceptance) 후 연결
방향성단방향 — 소비자가 제공자 서비스로만 접근(제공자가 소비자 VPC로 들어오지 않음)
노출 범위딱 그 하나의 서비스만 노출(VPC 전체를 여는 피어링과 다름)
CIDR소비자·제공자 CIDR이 겹쳐도 문제없음(ENI로 만나므로)
규모1:다(one-to-many) — 한 서비스에 여러 소비자 VPC/계정 연결

시험 감각: "SaaS/파트너/다른 팀에게 특정 서비스 하나만 사설로 제공, 인터넷 노출·VPC 피어링 없이" = PrivateLink Endpoint Service(NLB 뒤).

PrivateLink vs VPC Peering — 무엇을 여는가 (빈출)

둘 다 VPC 간 사설 연결이지만 여는 범위와 방향이 다르다.

구분PrivateLink (Endpoint Service)VPC Peering
노출 대상서비스 하나(NLB 뒤 엔드포인트)VPC 전체(양쪽 CIDR 서로 라우팅)
방향소비자 → 제공자 단방향기본 양방향
CIDR 겹침무관(겹쳐도 OK)겹치면 안 됨(local 우선이라 라우팅 불가)
확장성1:다로 깔끔(고객 많아도 서비스 하나)다수면 연결이 mesh로 폭증(비전이적)
대표 용도SaaS 제공, 팀 간 마이크로서비스 노출두 VPC의 전반적 상호 통신

자세한 비교는 VPC Peering 노트 참고. "노출 최소화(서비스 하나만) + CIDR 충돌 회피 + 다수 소비자" 신호면 PrivateLink, "두 VPC를 통째로 붙여야" 하면 Peering.

엔드포인트 정책 (Endpoint Policy)

엔드포인트 정책은 엔드포인트를 통해 무엇에 접근할 수 있는지 제한하는 IAM 유형의 리소스 정책이다. Gateway·Interface 둘 다 붙일 수 있다.

항목내용
성격IAM 정책 형식의 리소스 정책(엔드포인트에 부착)
효과이 엔드포인트로 갈 수 있는 서비스/리소스/액션을 제한
예시"이 S3 Gateway Endpoint로는 특정 버킷에만 접근 허용"
기본값아무 것도 안 걸면 full access(모두 허용)
주의최종 접근 = 엔드포인트 정책 ∩ IAM 정책 ∩ 리소스(버킷) 정책

시험 감각: "S3 Endpoint를 통과하는 접근을 특정 버킷으로만 제한" = 엔드포인트 정책.

보안 제어 — 어디서 무엇으로 막나

엔드포인트 종류트래픽 제어 수단
Gateway Endpoint라우트 테이블 연결 + 엔드포인트 정책 (ENI 없어 SG 없음)
Interface EndpointENI의 보안 그룹(보통 인바운드 TCP 443 허용) + 엔드포인트 정책

Interface Endpoint가 통신 안 되면 ENI 보안 그룹의 443 인바운드가 열렸는지 먼저 의심. 보안 그룹 vs NACL 개념은 Security Group vs NACL 참고.

비용 감각 (빈출)

요소Gateway EndpointInterface Endpoint
시간당 요금없음있음(엔드포인트·AZ당)
데이터 처리 요금없음GB당 있음
NAT 비용 절감S3/DynamoDB 트래픽을 NAT에서 빼 NAT 데이터 요금 회피해당 서비스 트래픽을 NAT에서 빼 회피(다만 자기 요금 있음)

대표 절감 시나리오: 프라이빗 서브넷에서 S3로 대량 전송 → 무료 Gateway Endpoint로 NAT 데이터 처리비 제거. Interface Endpoint는 자체 요금이 있으니 "무료로 아낀다"는 S3/DynamoDB(Gateway)에만 해당.

언제 무엇을 쓰나 — 정리

S3 / DynamoDB          -> Gateway Endpoint (무료, 라우트, 온프렘 불가)
그 외 AWS 서비스        -> Interface Endpoint (유료, ENI, Private DNS)
온프렘/피어링에서 접근   -> Interface Endpoint (Gateway는 불가)
내 서비스를 남에게 노출  -> PrivateLink Endpoint Service (NLB 뒤)

Common Wrong Directions

오답 방향왜 부족한가
SQS/KMS 등에 Gateway Endpoint 사용Gateway는 S3·DynamoDB 전용 → 나머지는 Interface
S3 접근을 위해 굳이 Interface Endpoint 생성S3는 무료 Gateway Endpoint가 정석(비용상 유리)
온프레미스에서 Gateway Endpoint로 S3 접근 시도Gateway는 라우트라 VPC 밖(온프렘)에서 못 씀 → Interface Endpoint 필요
Interface Endpoint인데 SG 443 안 열고 안 된다고 함ENI 기반이라 보안 그룹 인바운드 443 필요
Endpoint Service를 ALB 뒤에 두려 함PrivateLink Endpoint Service는 NLB(또는 GWLB) 필요
서비스 하나 노출인데 VPC Peering 선택Peering은 VPC 전체·CIDR 충돌 위험 → PrivateLink가 적합
S3 접근을 특정 버킷으로 제한하려는데 SG로 하려 함Gateway엔 SG 없음 → 엔드포인트 정책으로 제한
VPC Endpoint면 트래픽이 인터넷을 거친다고 오해인터넷/NAT/IGW 안 거치고 AWS 사설망 내부로만 흐름

Exam Triggers

문제에서 이런 표현이 나오면떠올릴 것
"access S3/DynamoDB from private subnet without internet"Gateway Endpoint(무료)
"reduce NAT data cost for S3/DynamoDB traffic"S3/DynamoDB Gateway Endpoint
"privately access SQS/KMS/Secrets Manager/ECR without internet"Interface Endpoint (PrivateLink)
"access an AWS service privately from on-premises (VPN/DX)"Interface Endpoint(Gateway 불가)
"expose our own service to other VPCs/customers privately"PrivateLink Endpoint Service(NLB 뒤)
"no VPC peering, no internet exposure, CIDR may overlap"PrivateLink
"connect whole VPCs to each other"VPC Peering / Transit Gateway
"restrict which bucket the endpoint can reach"Endpoint Policy
"interface endpoint reachable but connection fails"ENI 보안 그룹 443 확인
"use service's normal DNS name, no code change"Private DNS 활성화

Memory Sentence

VPC Endpoint는 인터넷·NAT·IGW 없이 VPC를 AWS 서비스에 사설로 붙이는 통로다. S3·DynamoDB만 Gateway Endpoint(라우트에 prefix list 경로, 무료, 온프렘 불가, 제어는 엔드포인트 정책), 나머지는 전부 Interface Endpoint(서브넷 ENI + 사설 IP, 유료, Private DNS, 보안 그룹으로 제어, 온프렘/피어링에서도 접근 가능). Interface Endpoint의 기반인 PrivateLink로 내 서비스(NLB 뒤)를 다른 VPC/고객에게 단방향·1:다·CIDR 무관하게 노출할 수 있어, VPC 전체를 여는 Peering과 대비된다.

References

댓글

아직 댓글이 없습니다.