AWS S3
정의 : S3는 AWS에서 제공하는 객체 스토리지 서비스로,
데이터를 파일 단위(Object 단위)로 저장하고 인터넷을 통해 접근할 수 있다.
EC2가 ‘가상 서버’라면, S3는 ‘무한히 확장 가능한 클라우드 저장소’라고 이해할 수 있다.
S3의 핵심 목적
| 목적 | 설명 |
|---|
| 확장성 (Scalability) | 데이터 용량에 제한이 없으며 자동으로 확장 가능 |
| 내구성 (Durability) | 여러 AZ에 복제 저장하기 때문에 데이터 유실이 0에 수렴 |
| 가용성 (Availability) | 다중 AZ 분산 저장으로 장애 발생 시에도 데이터 접근 가능 |
| 보안성 (Security) | IAM 정책, 버킷 정책, 암호화(KMS) 등으로 접근 제어 |
| 비용 효율성 (Cost Optimization) | 사용한 스토리지와 요청량만큼만 과금 (Pay-as-you-go) |
⚙️ S3 주요 구성요소
| 구성요소 | 설명 | 예시 |
|---|
| Bucket | 데이터를 저장하는 컨테이너 | my-project-data |
| Object | S3에 저장되는 실제 데이터 (파일 단위) | image.png, log.txt |
| Key | 버킷 내에서 Object를 구분하는 고유 식별자 | images/profile/user1.png |
| Region | 데이터가 저장되는 물리적 위치 | ap-northeast-2 (서울), us-east-1 |
| Storage Class | 접근 빈도에 따라 비용과 성능이 다른 저장 유형 | Standard, IA, Glacier |
| Versioning | 동일한 파일의 변경 이력을 관리 | version ID별로 복원 가능 |
| Lifecycle Policy | 자동으로 스토리지 클래스 전환 또는 삭제 | 30일 후 Glacier로 이동 |
| Encryption | 저장 데이터 암호화 기능 | SSE-S3, SSE-KMS |
| Object Lock | 특정 기간 동안 객체 삭제 방지 | 규제 준수용 백업 |
| Access Point | 대규모 데이터셋에 대한 접근 제어 단순화 | 분석팀 전용 접근 경로 생성 |
S3와 IAM의 관계
- S3 리소스 접근은 IAM 정책 또는 버킷 정책으로 제어됨
- EC2나 Lambda가 S3에 접근할 때는 IAM Role을 부여해
Access Key 없이 안전하게 API 호출 가능
📌 예시:
EC2 → IAM Role 부여 → S3 버킷 접근 (s3:GetObject, s3:PutObject)
🧊 S3 저장 클래스 비교
| 클래스 | 특징 | 사용 예시 |
|---|
| Standard | 자주 접근하는 데이터, 높은 내구성/가용성 | 웹 애플리케이션, 정적 콘텐츠 |
| Standard-IA (Infrequent Access) | 가끔 접근하지만 빠른 접근이 필요한 데이터 | 백업, 로그 |
| One Zone-IA | 단일 AZ에 저장, 비용 저렴 | 재생성 가능한 데이터 |
| Glacier Instant Retrieval | 즉시 복원 가능한 아카이브용 | 자주 조회되는 백업 |
| Glacier Flexible Retrieval | 수 분~수 시간 내 복원 가능 | 장기 보관 데이터 |
| Glacier Deep Archive | 가장 저렴, 12시간 내 복원 | 규제/기록용 보관 |
| Intelligent-Tiering | 접근 패턴에 따라 자동으로 클래스 이동 | 접근 패턴이 불확실한 데이터 |
💰 S3 비용 구조
S3 비용 = 저장 용량 + 전송량
| 항목 | 설명 |
|---|
| 스토리지 사용량 | 저장된 데이터 용량(GB 단위) |
| 요청(Request) | GET, PUT, LIST 등의 API 호출 횟수 |
| 데이터 전송 | AWS 밖으로 나가는 아웃바운드 트래픽 |
| Lifecycle Transition | 스토리지 클래스 간 이동 시 발생하는 비용 |
| 복제 비용 | Cross-Region Replication 사용 시 추가 과금 |
비용 절감 팁
- 자주 접근하지 않는 데이터는 Glacier/IA로 이동
- S3 Intelligent-Tiering으로 자동 전환
- CloudFront를 이용해 트래픽 절감
🗂️ S3 버전 관리 & 백업
| 기능 | 설명 |
|---|
| Versioning | 파일 변경 시 이전 버전 자동 보존 |
| Replication | 다른 리전에 자동 복제 (CRR, SRR) |
| Object Lock | 데이터 삭제 및 변경 방지 |
| AWS Backup | 중앙 집중식 백업 관리 서비스 |
🔏 S3 보안 관리
| 주제 | 설명 |
|---|
| IAM Policy | 사용자별 접근 권한 정의 |
| Bucket Policy | 버킷 전체에 대한 접근 제어 설정 |
| ACL (Access Control List) | 객체 수준 접근 제어 (현재는 권장 X) |
| Encryption | SSE-S3, SSE-KMS, Client-side Encryption 지원 |
| Public Access Block | 외부 공개 방지를 위한 기본 설정 |
| MFA Delete | 삭제 시 다중 인증 요구 |
⚙️ S3 관리 포인트
| 주제 | 핵심 내용 |
|---|
| Lifecycle Rule | 일정 기간 후 자동 삭제 또는 Glacier 이동 |
| CloudWatch Metrics | 요청 수, 오류율, 데이터 전송량 모니터링 |
| S3 Event Notification | 객체 업로드/삭제 시 Lambda, SNS, SQS 트리거 |
| Transfer Acceleration | 글로벌 엣지 네트워크를 통한 업로드 가속 |
| Static Website Hosting | 정적 웹사이트를 S3 버킷으로 호스팅 가능 |
| Cross-Region Replication | 다른 리전으로 자동 백업 복제 |
| Access Analyzer | 잘못된 공개 권한 탐지 기능 |
S3 활용 예시
| 시나리오 | 설명 |
|---|
| 정적 웹사이트 호스팅 | HTML/CSS/JS 파일을 S3에 저장 후 URL로 제공 |
| 백업 및 로그 저장 | CloudTrail, ALB, EC2 로그를 장기 보관 |
| 데이터 분석 파이프라인 | Athena, Glue, Redshift와 연계해 데이터 레이크 구성 |
| CI/CD 아티팩트 저장 | 빌드 결과물, 배포 파일 저장소로 활용 |
🧾 정리
S3는 AWS의 대표적인 객체 스토리지 서비스로, 높은 내구성과 확장성을 제공하며 다양한 스토리지 클래스와 연계 서비스(CloudFront, Glacier, Lambda 등)를 통해 데이터 백업, 분석, 웹 호스팅 등 다양한 용도로 활용 가능하다.
실제 시스템 설계에서는 접근 패턴, 암호화 정책, Lifecycle 관리, 비용 구조를
함께 고려해야 효율적이고 안전한 스토리지 구성이 가능하다.
Glacier : AWS S3 아카이브(장기보관) 스토리지 클래스
오래된 데이터를 저렴하게 보관하지만, 성능은 다소 아쉬움