ㅇ VPC Endpoint란?
> AWS 내부에서 트래픽을 주고 받기 쉽도록 설정하는 것
> S3에 접속하기 위해서는 Public망을 통해서 접근을 수행
(Public: Instance > IGW > S3 / Private: Instance > NAT > S3)
> Endpoint를 통해 Instance에서 바로 S3를 향할 수 있음
ㅇ Endpoint Interface, Gateway 차이
1) Interface
> Endpoint가 AZ내의 ENI로 생성하고, 해당 서비스에 대한 도메인 LookUp을 해당 ENI 응답
> Kinesis, EC2, SSM, ELB API 등을 지원
> Interface Endpoint로 생성 시에는 어느 VPC의 어떤 AZ의 어떤 Subnet을 사용할지 선택
> Interface Endpoint는 생성 시에 지정한 각 서브넷의 IP를 각각 할당받음
> Interface Endpoint를 이용해서 서비스를 호출하는 경우, AWS에서는 기본적으로 사용하는 도메인을 사용하거나, 별도의 서비스 도메인을 지정하여 VPC내에서 서비스 도메인 Lookup시 Inerface Endpoint의 IP로 응답하여 접근하도록 설정 가능
> 기존 AWS Public 서비스를 사용하도록 어플리케이션이 만들어진 경우, 기본 도메인으로 Interface Endpoint를 사용하게 되면 어플리케이션에서 AWS 서비스 호출 시 별도 변경 과정없이 Endpoint를 이용한 서비스 호출 가능
> Interface Endpoint를 생성하기 전에는 공인 IP를 보유한 리소스만이 IGW를 통해 Kinesis에 접근할 수 있었지만, Interface Endpoint를 생성한 이후에는 공인 IP없이도 Kinesis에 접근이 가능
Amazon Kinesis (실시간으로 비디오 및 데이터 스트림을 손쉽게 수집, 처리 및 분석)
2) Gateway
> EndPoint가 Gateway 타입으로 지원하여 AWS 서비스 접근 시, 라우팅으로 접근
> 라우팅 테이블에서 S3나 DynamoDB의 목적지 네트워크에 대한 Target으로 Gateway Endpoint를 지정
> S3와 DynamoDB 접근 지원
> Interface Endpoint와는 달리, 라우팅테이블에만 추가로 등록되어, 라우팅 테이블 경로를 보고 VPC Endpoint를 통해 S3 접근이 가능
ㅇ Endpoint Gateway를 사용한 S3와의 통신
> [VPC 서비스] - [엔드포인트] - [엔드포인트 생성] 선택
> VPC Endpoint를 생성할 서비스 선택(이번 실습에서는 S3와 연결할 것이므로 S3 선택)
> Endpoint와 연결될 VPC와 라우팅 테이블을 선택(라우팅 테이블 선택을 통해 Gateway 방식임을 알 수 있음)
> 이후 Endpoint의 상태가 "사용 가능"임을 통해 정상 제작되었음을 확인 가능
> 이후 Endpoint 생성 시 선택했던 라우팅 테이블 내부에, "vpce-~"를 대상으로 한 라우팅이 자동적으로 추가되었음을 확인 가능
> 이후 해당 서브넷에 존재하는 인스턴스에 접속해 s3 목록 확인 수행
(Endpoint가 연결되어있지 않다면, NAT 연결도 되어있지 않아 접속이 불가능할 것)
aws configure
aws s3 ls
> 통신 확인을 수행하기 위해 인스턴스에 있는 텍스트 파일을 s3로 이동
(private 서브넷에 존재하는 두 인스턴스에서 동일한 과정을 수행)
ls
aws s3 cp (파일명) s3://(s3 경로)
> 해당 버킷을 콘솔로 확인할 경우, 정상적으로 데이터가 들어간 것을 확인 가능