AWS S3
S3의 개념, 사용법, 보안 설정, 고급 기능, 비용 전략, 실무 활용까지 정리
AWS S3
1. S3 소개 및 기본 개념
S3란?
- AWS에서 제공하는 무제한 확장 가능한 객체 스토리지 서비스
- 파일 단위가 아닌 객체(Object)로 저장
- 99.999999999% 내구성, 99.99% 가용성을 자랑
주요 특징
- HTTP/HTTPS 프로토콜로 직접 접근 가능
- 정적 웹사이트 호스팅, 백업, 로그 저장 등에 광범위하게 활용
- 다양한 스토리지 클래스를 통해 비용 최적화 가능
S3 용어 정리
용어 | 설명 |
---|---|
Bucket | 데이터를 담는 최상위 컨테이너. S3에서 파일을 저장하려면 반드시 버킷이 필요 |
Object | 실제 파일 데이터 + 메타데이터 (Content-Type, 태그 등) |
Key | 버킷 내에서 객체를 구분하는 식별자. 경로처럼 사용됨 |
Region | 버킷이 위치한 물리적 리전. 데이터 전송 속도와 규정 준수에 영향을 줌 |
2. S3 기본 사용법
버킷 생성
- 버킷 이름은 전 세계에서 유일해야 하며 DNS 호환 방식 권장
- 리전 선택은 서비스와의 거리, 요금 정책 등을 고려
- 기본적으로 퍼블릭 접근 차단 설정이 활성화됨
객체 업로드 및 다운로드
- S3 콘솔에서 단일 파일, 폴더 업로드 가능
- 파일에 따라 공개 설정을 변경할 수 있음
- 다운로드 링크는
Pre-signed URL
기능을 활용 가능
폴더 구조 관리
- S3는 계층 구조가 아닌
Key Prefix
기반 구조 user/profile/jaden.png
처럼 객체 키에/
를 사용하여 가상의 폴더처럼 구성
3. S3 권한 및 보안 설정
IAM Policy
- 특정 사용자, 그룹, 역할에 접근 권한 부여
- S3뿐만 아니라 전체 AWS 서비스 접근 제어
1
2
3
4
5
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/*"
}
내부 사용자 관리에 적합
Bucket Policy
- 버킷 자체에 JSON 형식의 정책 부여
- 외부 사용자 또는 서비스에 대해 퍼블릭 접근 허용
1
2
3
4
5
6
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example-bucket/*"
}
정적 웹사이트 호스팅, 제3자 접근 허용 시 유용
ACL (Access Control List)
- 객체 또는 버킷 단위로 직접 권한 부여
- 현재는 제한적으로 사용되며 보안상 비추천
보안 팁
- 퍼블릭 접근을 반드시 차단하고 필요한 경우에만 버킷 정책 허용
- 서버 측 암호화 (SSE-S3, SSE-KMS) 또는 클라이언트 측 암호화로 보안 강화
- CloudTrail, Access Analyzer로 감사 로깅 및 접근 분석 가능
4. 고급 기능
버전 관리
- 동일한 Key에 대해 수정 이력을 모두 보관
- 실수로 삭제한 경우도 복원 가능
수명 주기 정책
- 지정된 날짜 또는 조건에 따라 객체를 자동으로 Glacier로 이전 또는 삭제
- 백업/아카이브 전략과 결합 시 비용 절감에 탁월
이벤트 알림
- 객체 업로드, 삭제 등의 이벤트 발생 시 Lambda, SQS, SNS로 자동 알림 연동 가능
- 서버리스 애플리케이션의 핵심 구성 요소로 활용 가능
5. 비용 최적화 전략
스토리지 클래스 선택
클래스 | 특징 | 사용 예시 |
---|---|---|
Standard | 기본, 빠른 접근 | 정적 웹, 앱 자산 |
Intelligent-Tiering | 자동 계층 전환 | 예측 어려운 데이터 |
Standard-IA | 드문 접근 | 백업, 로그 |
One Zone-IA | 단일 AZ | 덜 중요한 백업 |
Glacier | 장기 보관 | 감사, 기록물 |
Glacier Deep Archive | 초장기 | 규제/법적 보관 |
선택 기준: 접근 빈도, 복원 속도, 내구성, 저장 기간
비용 계산 기준
항목 | 예시 |
---|---|
저장 용량 | GB 단위 요금 |
요청 수 | GET/PUT 요청 요금 |
전송량 | 리전 간 또는 인터넷으로 전송 시 요금 발생 |
6. 실무 활용 사례
정적 웹사이트 호스팅
- HTML/CSS/JS 파일만으로 호스팅 가능
- 퍼블릭 정책 필요
- CloudFront 연동 시 HTTPS, 도메인 연결 가능
로그 저장소
- CloudTrail, ELB, VPC Flow 로그 저장에 사용
- Lifecycle 정책으로 자동 아카이빙
백업 & 아카이빙
- 데이터베이스 백업 파일 저장
- 주기적인 스냅샷 보관
AWS Transfer Family와 연동
- 기존 SFTP/FTP 방식의 시스템과 S3를 연결
- 기업 간 파일 전송, 파트너 통합에 적합
언제, 왜 S3를 쓰는가?
- 빠르게 저장하고 꺼내 써야 할 때
- 웹사이트나 정적 콘텐츠를 배포해야 할 때
- 장기 보관 데이터가 있을 때
- 레거시 FTP 시스템을 클라우드로 마이그레이션할 때
This post is licensed under CC BY 4.0 by the author.