Amazon EC2 인스턴스에서 S3에 접근하려면 기본적으로 Internet Gateway에 연결된 Public Subnet에 EC2가 위치해야 합니다.
Internet Gateway or NAT Gateway에 연결되지 않은 Private Subnet에 존재하는 EC2의 경우 Private Link를 통해 S3에 접근할 수 있습니다.
자세한 내용은 아래 내용을 확인하세요.
테스트 구성도
- Public Subnet에 위치한 EC2 1개, Private Subnet에 위치한 EC2 1개
- S3 Bucket 정책에 테스트 진행할 VPC의 접근 권한 설정
- Private Subnet에 위치한 EC2에서 S3에 저장된 파일 다운로드
Private EC2에서 S3 접근 불가 확인
- wget을 사용하여 S3에 저장된 파일 다운로드
S3에 연결 시도가 실패되는 것 확인 가능
S3 연결을 위한 VPC Endpoint 생성
- VPC → Endpoint(엔드포인트) -> Create Endpoint(엔드포인트 생성)
- 서비스 이름에서 S3를 선택
3. Endpoint를 생성할 VPC와 해당 VPC에 존재하는 라우팅 테이블 선택
Endpoint 생성시 선택한 라우팅 테이블에 자동으로 라우팅 설정 됨
4. 해당 VPC Endpoint에 대한 정책 설정(기본 설정은 해당 VPC의 모든 Resource 접근 가능)
VPC에 존재하는 Resource만 접근이 가능하고 S3에 존재하는 파일만 다운로드 가능, 쓰기 불가
5. Endpoint 생성 완료
S3 Bucket 정책 설정
- S3에 VPC Resource가 접근 가능하도록 정책 설정
- 정책 생성기 URL : https://awspolicygen.s3.amazonaws.com/policygen.html
- S3 -> Access할 버킷 선택 -> 권한 -> 버킷정책
{
"Version": "2012-10-17",
"Id": "Policy1543209762102",
"Statement": [
{
"Sid": "Stmt1543209759663",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::my_bucket_name",
"arn:aws:s3:::my_bucket_name/*"
],
"Condition": {
"StringEquals": {
"aws:SourceVpc": "VPC_ID"
}
}
}
]
}
Private EC2에서 S3 Data 다운로드 최종 확인
S3에 저장되어 있는 jpg 파일 정상 다운로드 확인 완료