Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
VPC Endpoint란?
VPC endpoint는 AWS의 서비스를 public internet을 통하지 않고, AWS 백본 네트워크인 Private Link를 통해 안전하고 빠르게 접근할 수 있는 서비스를 제공한다.
이를 위해서 VPC에는 목표 서비스의 Gateway endpoint 또는 interface endpoint를 배치해야 한다.
S3는 VPC Gateway endpoint를 지원하다가 interface endpoint 서비스가 생기면서 interface endpoint 까지 생성할 수 있게되었다.
일반적으로 DynamoDB와 S3는 Gateway endpoint를 사용하는 것이 권장되는데, 어떤 상황에서 어떤 것이 좋을지 확인하기 위해 두 서비스의 명확한 차이를 알아보자.
Gateway Endpoint
어디까지나 Gateway이기 때문에 Internet Gateway처럼 서브넷에 배치되지 않고, 서브넷의 라우팅 테이블이 Gateway endpoint를 가리키도록 배치해야 한다. 또한 SG도 별도로 적용할 수 없다.
S3와 DynamoDB만이 해당 서비스를 사용할 수 있다.
AWS는 Longest Prefix Match을 사용하므로, 라우팅 테이블에 0.0.0.0/0으로 Internet Gateway의 경로가 있더라도 Gateway endpoint의 경로가 우선적으로 선택된다. 만약 Gateway endpoint보다 더 정확한 IP 주소의 경로가 있다면 해당 경로가 더 우선시된다.
어디까지나 VPC 내부에서의 접근을 허용하는 용도로 사용된다.
Gateway endpoint의 가장 큰 장점은 배치와 사용 비용이 무료라는 점이다.
Interface Endpoint
Interface Endpoint는 AWS의 정말 다양한 서비스와의 Private link를 제공한다.
이름에서 알 수 있듯이 ENI가 VPC에 특정 Subnet에 배치되는 형태이다. (ENI에 대한 SG 적용이 필수)
Gateway와 달리 라우팅 테이블 세팅이 별도로 필요하지 않기 때문에, ENI가 배치된 서브넷으로의 접근만 할 수 있으면 된다. 즉 같은 VPC내라면 이용이 가능하다.
이는 AWS의 DNS 서비스 사용하기 때문에 가능한 것이므로, VPC의 DNS resolution 기능이 필수로 켜져있어야 한다.
ENI가 배치되기 때문에 시간당 + 트래픽당 비용이 발생하며, 가용성을 높이기 위해서는 AZ별로 배치해주어야 한다.
이때 명시적인 라우팅 테이블 세팅이 없다면 아래의 그림처럼, 인스턴스들이 라운드 로빈을 통해 Interface Endpoint에 접근한다.
이때 타 AZ의 ENI에 접근하면 Cross AZ에 의해 GB당 0.01GB의 비용이 발생한다.
이러한 비용을 감수하더라도 하나의 ENI의 장애 발생을 대비해 트래픽을 제한하지 않을 수 있다.
그렇지 않다면, 같은 AZ의 endpoint를 사용하도록 트래픽을 제한해주어야 한다.
이런 경우 가용성은 비교적 떨어질 수 있다.
단, AWS에서의 이중화 배치는 보통 AZ 장애에 대응하기 위함이므로 이러한 세팅이 비용을 절감할 수 있다.
(어차피 AZ-2가 장애가 난다면 AZ-2의 인스턴스들도 다운되므로 AZ-1으로의 접근은 발생하지 않는다.)
이를 위해서 각 AZ에서는 각자의 AZ에 배치된 Subnet만 사용할 수 있도록 라우팅 테이블을 세팅하면 된다.
특히 interface endpoint만 배치하는 subnet을 따로 두어 배치하면, 트래픽 세팅에 편의성을 가져갈 수 있다.
S3를 interface endpoint로 접근하는 경우
여기까지만 보면 관리적으로도 비용적으로도 우수한 Gateway endpoint로 S3를 접근하는 것이 당연히 좋아 보인다.
하지만 S3를 interface endpoint로 접근하는 이유는 따로 있다.
Onpremiss나 타 cloud와 VPC를 VPN으로 연결하면, Inteface Endpoint를 사용해서 PrivateLink로 S3에 접근할 수 있게 된다.
이때 Inteface Endpoint 자체가 진입점이 되어서, 자신의 private IP로 트래픽을 변경해서 S3로 전달해 줄 수 있다. (일종의 프록시의 역할을 한다.)
반면 Gateway endpoint는 자체에 별도의 라우팅 세팅을 해줄 수 없고, Gateway이기 때문에 타 네트워크의 트래픽을 중계해 줄 수 없다. (프록시를 제공하지 못 한다.)
따라서 하이브리드나 다중 VPC/리전 환경에서는 비용이 발생하더라도 Inteface Endpoint 통해 연결 제한 필요할 수 있다.
참조
https://docs.aws.amazon.com/ko_kr/vpc/latest/privatelink/gateway-endpoints.html
https://docs.aws.amazon.com/ko_kr/vpc/latest/privatelink/privatelink-access-aws-services.html
https://blog.bespinglobal.com/post/aws-vpc-s3-endpoint-gateway-vs-interface-%EC%B0%A8%EC%9D%B4/
'Cloud > AWS' 카테고리의 다른 글
AWS의 메타데이터 서버가 링크 로컬 주소를 사용하는 이유 ( 169.254.169.254 주소는?) (0) | 2024.07.27 |
---|---|
[AWS] VPC의 DNS 서버인 Route 53 Resolver 란? (0) | 2024.07.25 |
[AWS] 유사 서비스인 SNS와 EventBridge의 핵심 차이 (0) | 2024.07.23 |
[AWS] CloudWatch가 EC2 Memory 모니터링을 제공하지 않는 이유는? (Hypervisor & OS) (0) | 2024.07.20 |
Lambda의 VPC 접근을 위한 Hyperplane ENI (0) | 2024.07.19 |