VPC S3 Gateway Endpoint 설정

석형원·2024년 7월 30일

project

목록 보기
1/11

VPC S3 Gateway Endpoint 설정을 해주려는 이유는 다음과 같습니다.

Private Subnet에 위치한 EC2 인스턴스에서 Airflow DAG를 통해 S3에 대한 api를 지속적으로 호출해야하는 상황입니다.

이때, 일반적인 경우라면 S3에 접속하기 위해 아래와 같이 이동을 하게 됩니다.
EC2(Private) → NAT Gateway → Router → Internet Gateway → 외부 인터넷 → S3

이는 외부 인터넷에 Private Subnet 안에 있는 EC2 인스턴스의 활동, 트래픽이 노출됨을 의미합니다.
또한, VPC는 외부에서 들어오는 트래픽에는 과금이 부여되기 때문에 효율적이지 못합니다.

이를 해결하기 위한 방법이 VPC S3 Gateway Endpoint입니다.

VPC 내부에 Endpoint를 형성하여 Endpoint를 통해 AWS 외부 서비스인 S3에 도달하게 해주는 서비스라고 볼 수 있습니다.

또한, 이 VPC S3 Gateway Endpoint를 통해 S3와 Private 연결을 유지할 수 있기 때문에 S3에서 동일한 VPC Private Subnet에 위치한 RDS로 데이터도 전송할 수 있게 됩니다.

S3 Gateway Endpoint 통신 과정

  1. Private Subnet에 위치한 EC2에서 S3에 대한 API를 호출
  2. Routing Table -> Router -> Gateway Endpoints
  3. Gateway Endpoints에서 트래픽을 받아 S3로 전송

IAM 설정

기본적으로 EC2에서 S3로 액세스할 수 있는 권한이 필요하므로,
IAM에서 역할을 생성해줄 것입니다.
( IAM -> 역할 -> 역할 생성 )

S3FullAccess 정책 선택 혹은 그에 준하는 정책 생성

EC2 인스턴스에 IAM 역할 부여

생성한 역할을 선택

S3 Gateway Endpoint 생성

VPC -> 엔드포인트 -> 엔드포인트 생성

서비스는 같은 지역의 s3 서비스 중에서 Gateway 유형을 선택합니다.

연결해줄 VPC 선택 및 private subnet들의 라우팅 테이블을 선택

S3에 대한 엔드포인트를 전부 vpce(vpc endpoint)로 트래픽을 전송하겠다는 의미입니다.

실제로 이를 살펴보면 '항목'란에 S3가 사용하는 CIDR이 모두 포함되어 있는 것을 볼 수 있습니다.

즉, 이 CIDR 정보를 통해 인터넷을 거치지 않고 바로 S3와 통신을 할 수 있다는 것이죠.

연결 확인

이제 VPC 내에서 S3 Gateway Endpoint 설정이 끝이 났으므로,
Private Subnet(EC2)에서 S3로 접근이 잘 되는지 확인해보겠습니다.

aws s3 ls --region ap-northeast-2
위의 S3 버킷명을 호출하는 api가 정상적으로 보내졌다면 S3 버킷명들이 출력될 것입니다.

참고 :
https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-VPC-End-Point-%EA%B0%9C%EB%85%90-%EC%9B%90%EB%A6%AC-%EA%B5%AC%EC%B6%95-%EC%84%B8%ED%8C%85

profile
데이터 엔지니어를 꿈꾸는 거북이, 한걸음 한걸음

0개의 댓글