공부 기록용이니 틀린 점 있으면 알려주세요
VPC Endpoint
VPC 내부의 AWS 서비스를(🌐외부 인터넷을 거치지 않고) 다른 AWS 서비스들과 프라이빗하게 (네트워크) 연결하기 위한 엔드포인트 서비스이다.

VPC Endpoint가 필요한 이유?
▶ VPC와 다른 AWS 서비스를 프라이빗하게 연결하기 위해서.
▶ 프라이빗 연결이 필요없다면 VPC Endpoint 사용안해도 된다.
(해커한테 공격받아도 난 모름)
📌상당히 중요) AWS 서비스에는 Public한 공인IP를 가지고 있는 AWS 서비스들이 있다.
- S3
- CloudWatch
- Cloudfront
- DynamoDB
- API Gateway
위와 같은 서비스들은 Public한 서비스이기 때문에
따라서 VPC 내부에서 S3와 같은 서비스에 연결하려면 필연적으로 외부 인터넷을 경유해야만 합니다.
문제는 외부 인터넷을 경유하는 과정에서 데이터가 노출될 위험이 있다는 점입니다.
그래서 많은 기업들은 이러한 연결 방식을 꺼려합니다.
VPC Endpoint는 VPC를 S3와 같은 서비스와 연결할 때,
외부 인터넷을 경유하지 않고 직접적이고 프라이빗한 연결을 만들어 줍니다.
VPC Endpoint 특징
- VPC Endpoint를 통해서 VPC 내부의 리소스를 다른 외부(Public) AWS 서비스와 프라이빗하게 연결할 수 있다
- 인터넷을 거치지 않기에 데이터 전송의 보안성을 강화시킨다
- 외부 서버(인터넷)를 거치지 않기에 더 빠르게 접근할 수 있다
- VPC Endpoint는 2 가지 종류가 있다 (이용할 수 있는 서비스가 다름)
- VPC Gateway Endpoint
- Private Link: (ENI) Interface Endpoint
⚠ 주의점: VPC Endpoint는 같은 리전 내에서만 연결 가능하다.
VPC Enpoint 2가지 종류
VPC Gateway Endpoint 와 PrivateLink 차이점
| VPC Gateway Endpoint | PrivateLink (Interface Endpoint) | |
| Supported services | S3, DynamoDB | Most of AWS services (상당히 많다) |
| Routing table (라우팅 테이블) | Required (필요) | Not required (필요없다) |
| Endpoint (엔드포인트) | VPC | Subnet |
| On-premise access | No access | Allow access |
| 💸 Pricing | Free (무료) | Charged (유료) |

1. VPC Gateway Endpoint

- Amazon S3와 Amazon DynamoDB만을 프라이빗하게 연결하기 위한 서비스
(지원 서비스가 딱 2개, 이 외의 서비스들은 PrivateLink 방식을 써야 한다) - 비용은 무료이다
- Route table이 필요하다 (IP 주소를 쓰지 않음, 서브넷에 네트워크 카드(ENI)를 만드는 방식이 아님)
- VPC가 엔드포인트가 된다. (PrivateLink는 Subnet이 엔드포인트)

VPC Gateway Endpoint에 연결하는 방법
- 연결하려는 AWS 리소스(EC2 등)가 위치한 VPC에 VPC Gateway Endpoint를 생성한다
- 해당 서브넷의 라우팅 테이블(Route Table)에 트래픽의 대상(Target)이 VPC Gateway Endpoint를 향하도록 경로를 추가한다
- VPC Gateway Endpoint가 연결되면, 해당 VPC 내의 모든 리소스가 별도의 추가 설정 없이 해당 서비스(S3/DynamoDB)에 접근할 수 있다.





Establish connectivity between VPCs and AWS services without exposing data to the internet
2. AWS PrivateLink (Interface Endpoint)

- [브랜드명: AWS PrivateLink]
- [실제 작동 부품명: Interface Endpoint]
- 다양한 AWS 서비스들에 프라이빗 연결하기 위한 서비스이다.
- 주로 VPC끼리 연결할 때 활용된다. (왜냐하면 대부분의 AWS 서비스들은 VPC 위에 두기 때문에)
- (VPC 위에 둘 수 없는 AWS 서비스) 퍼블릭 영역 서비스: S3, DynamoDB, Kinesis
- 비용은 든다
- Route table이 필요 없다
- Subnet이 엔드포인트가 된다. (Gateway Endpoint는 VPC가 엔드포인트)
- Elastic Network Interface(ENI)를 사용하여 보안 그룹(security group)과 연결된다.
(ENI란 → https://jibinary.tistory.com/133) - 서비스를 이용할 리소스가 위치한 서브넷에 프라이빗 IP를 가진 ENI를 생성하여, 해당 서비스와 VPC를 직접 연결

AWS PrivateLink 의 연결 대상
- VPC Endpoint로 자신의 AWS계정의 AWS 서비스에 연결 (VPC Endpoint Service가 필요 없음)
- VPC Endpoint로 다른 AWS 계정의 VPC 연결 (VPC Endpoint Service가 필요)
- VPC Endpoint로 AWS Marketplace 파트너 서비스에 연결

다른 AWS 계정의 VPC와 어떻게 PrivateLink로 연결시키는가?
→ VPC Endpoint와 VPC Endpoint Service가 필요하다.
다른 계정의 VPC와 연결하고자 할 때, 연결 상대의 VPC는 같은 Region에 있어야 한다.
서로 다른 리전 간에 VPC를 연결하려면 VPC Peering를 고려해야 한다.

- VPC Endpoint: 서비스 이용하는 측의 VPC 안에서 작성
- VPC Endpoint Service: 서비스 제공하는 VPC 안에서 작성



참고자료
https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html
https://docs.aws.amazon.com/ko_kr/whitepapers/latest/aws-privatelink/what-are-vpc-endpoints.html
https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.htmlhttps://bosungtea9416.tistory.com/entry/AWS-VPC-Endpoint-Gateway-Endpoint-Interface-Endpoint
https://dev.classmethod.jp/articles/organize-private-links-with-endpoints/