S3는 AWS에서 가장 많이 쓰이는 클라우드 스토리지입니다.
하지만 막상 처음 시작하려면 권한 설정, 암호화, 퍼블릭 차단, 접근 방법 등 생각보다 신경 쓸 게 많습니다.
이 글은 제가 테스트용 S3 환경을 구축하면서 직접 궁금했던 것들을 하나하나 정리한 실전 가이드입니다.
1. S3 버킷 생성
- AWS Console 접속 → S3 → 버킷 만들기
- 입력 항목:
- 버킷 이름: 소문자, 하이픈 가능, IP 형식 금지
- 리전 선택
버킷 이름 작성 팁
버킷 이름은 전 세계에서 고유해야 하며, 조직 구조를 반영하면 관리가 쉽습니다.
[조직명]-[서비스명]-[데이터종류]-[환경]
예시:
- hippotnc-cogmo-interaction-dev
- skku-federated-dataset-prod
2. 퍼블릭 액세스 차단
실수로 전체 공개되는 걸 막기 위한 "방화벽" 같은 설정
설정 시 4가지 모두 체크:
- 퍼블릭 ACL 차단
- 새 ACL 거부
- 기존 ACL 무시
- 퍼블릭 정책 차단
👉 IAM 사용자, Role 등 권한이 있는 사람은 전혀 제한받지 않으므로 걱정 없습니다.
3. 기본 암호화
데이터를 업로드할 때 자동으로 암호화되게 만드는 설정입니다. 특히 AI 학습 데이터나 민감한 정보는 필수로 설정해야 합니다.
권장 암호화 방식
| SSE-S3 | AWS가 키 관리 (자동 암호화) | ✅ 기본 추천 |
| SSE-KMS | 내가 관리하는 KMS 키 사용 | 🔒 민감 정보용 |
4. S3 접근을 위한 IAM 사용자 생성
루트 계정은 가급적 사용하지 않아야합니다. boto3, AWS CLI, 로컬 스크립트 등에서 사용할 IAM 사용자를 만들어야 합니다.
IAM 사용자 생성
- AWS 콘솔 접속 → IAM → 사용자 → 사용자 추가
- 사용자 이름 예: s3-dev-user
- 접근유형
- 프로그래밍 방식 액세스 체크 (API 접근용)
- 콘솔 접근은 불필요 (개발 목적이면 생략)
- 권한 부여: AmazonS3FullAccess or 특정 버킷에만 접근하는 사용자 정책
- Access Key 생성
- Access Key ID와 Secret Access Key 저장
- 키는 한 번만 보여지므로 반드시 복사/다운로드
| 항목 | 용도 |
| CLI | AWS CLI에서 명령 실행 시 사용 |
| 로컬 코드 | Python 등에서 코드로 접근할 때 |
| 설명 태그 | 키 용도 메모 |
IAM 계정은 팀 단위? 개인 단위?
개인 단위로 부여하는 것이 원칙입니다. 권한 추적과 보안 사고 대응이 훨씬 유리합니다.
단기 테스트용이라도 IAM 사용자 1명을 만들어서 Access Key만 발급받는 구조가 가장 안전하고 권장됩니다.
5. Python에서 연동 테스트
import boto3
# S3 접속
s3 = boto3.client(
's3',
aws_access_key_id='YOUR_KEY',
aws_secret_access_key='YOUR_SECRET',
region_name='ap-northeast-2'
)
# 버킷 목록 확인
for b in s3.list_buckets()["Buckets"]:
print("-", b["Name"])