AWS S3(Simple Storage Service)는 객체(Object) 기반 스토리지 서비스다.
파일 시스템처럼 보이지만 실제로는 Key-Value 구조로 동작하며, 이미지·정적 리소스·백업 파일·로그 데이터 등을 저장하는 용도로 사용된다.
EC2 내부 디스크에 직접 파일을 두는 방식과 달리, 서버와 스토리지를 분리할 수 있어 확장성과 운영 안정성이 높다.
트래픽이 증가해도 스토리지는 그대로 유지되므로, 무중단 확장 구조를 만들기 유리하다.
1. S3 기본 구조 이해
S3는 다음 단위로 구성된다.
- Bucket — 객체를 담는 최상위 단위
- Object — 실제 저장되는 파일
- Key — 객체의 전체 경로 문자열
- Region — 버킷이 생성되는 리전
예를 들어 images/profile/a.png는 디렉터리 구조가 아니라 하나의 문자열 Key다.
S3는 폴더 개념이 아니라 Prefix 기반으로 객체를 구분한다.
2. 버킷 생성과 기본 설정
버킷 생성 (CLI)
aws s3api create-bucket \
--bucket my-service-assets \
--region ap-northeast-2 \
--create-bucket-configuration LocationConstraint=ap-northeast-2
서울 리전(ap-northeast-2)에서 생성할 경우 LocationConstraint를 지정하지 않으면 오류가 발생한다.
리전별 요구 조건이 다르므로 생성 시 반드시 확인해야 한다.
퍼블릭 액세스 차단
aws s3api put-public-access-block \
--bucket my-service-assets \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true
버킷 생성 직후 퍼블릭 차단을 기본값으로 두는 것이 안전하다.
기본은 차단, 필요한 경우 정책으로 명확히 허용하는 방식이 운영상 안정적이다.
3. 접근 제어 구조
S3 권한은 IAM 정책과 Bucket Policy로 관리한다.
ACL은 가능하면 사용하지 않는 것이 좋다.
접근 시 403 AccessDenied 오류가 발생한다면 IAM과 Bucket Policy를 동시에 점검해야 한다.
명시적 Deny가 있는지도 함께 확인해야 한다.
한 줄 요약
S3는 객체 기반 스토리지. 버킷 생성 시 리전 확인 → 퍼블릭 차단 기본 적용 → IAM·Bucket Policy로 권한 관리 → Presigned URL로 업로드 처리 → 배포 시 sync 옵션 점검.
댓글 0