Amazon S3(Simple Storage Service) AWS의 가장 핵심적인 빌딩 블록 중 하나로, “무한 확장” 객체 스토리지
- 많은 웹사이트의 백본 스토리지
- 다수의 AWS 서비스와 통합 지점 역할
- 본 섹션은 기초부터 단계적으로 접근
📦 Amazon S3 사용 사례
- Backup & Storage
- Disaster Recovery
- Archive
- Hybrid Cloud Storage
- Application Hosting
- Media Hosting
- Data Lakes & Big Data Analytics
- Software Delivery
- Static Website Hosting
사례
- Nasdaq: 7년치 데이터를 S3 Glacier에 저장
- Sysco: S3 기반 분석으로 비즈니스 인사이트 확보
🪣 Amazon S3 – Buckets
S3는 객체(Object) 를 버킷(Bucket) 에 저장
Bucket 특징
- 전 세계적으로 유일한 이름
- 모든 리전, 모든 계정 통틀어 유일
- 리전 단위로 생성
- 글로벌 서비스처럼 보이지만 실제로는 Region 종속
Bucket Naming Rules
- 대문자 ❌
- 언더스코어(_) ❌
- 길이: 3~63자
- IP 주소 형식 ❌
- 소문자 또는 숫자로 시작
xn--접두사 ❌s3alias접미사 ❌
📄 Amazon S3 – Objects
S3는 디렉터리 개념이 없음
Object Key
-
객체의 전체 경로
s3://my-bucket/my_file.txt s3://my-bucket/my_folder1/another_folder/my_file.txt -
Prefix + Object Name
-
슬래시(
/)는 문자열의 일부
📄 Amazon S3 – Object 구성 요소
- Object Value
- 실제 데이터
- 최대 크기
- 5TB (5000GB)
- 5GB 초과 시 Multipart Upload 필수
- Metadata
- Key / Value (시스템 or 사용자)
- Tags
- 최대 10개 (Unicode)
- 보안 / Lifecycle 관리에 활용
- Version ID
- Versioning 활성화 시 부여
🔐 Amazon S3 – Security 개요
1️⃣ User-Based
- IAM Policy
- 특정 IAM User / Role에 허용 API 정의
2️⃣ Resource-Based
- Bucket Policy
- 버킷 전체 규칙
- Cross-Account 접근 가능
- Object ACL
- 객체 단위 세부 제어 (비활성화 가능)
- Bucket ACL
- 덜 사용됨 (비활성화 가능)
접근 허용 조건 (중요)
IAM 또는 Resource 정책 중 하나라도 Allow
- Explicit Deny가 없어야 함
📜 S3 Bucket Policies
JSON 기반 정책
구성 요소
- Resources: Bucket / Object
- Effect: Allow / Deny
- Actions: 허용 / 차단 API
- Principal: 계정 또는 사용자
사용 목적
- 퍼블릭 접근 허용
- 업로드 시 암호화 강제
- Cross-Account 접근 허용
🌍 예시 – Public Access (Bucket Policy)
AnonymousUser
↓
S3 Bucket
↓
BucketPolicy (PublicRead)
- 웹사이트 정적 호스팅 시 활용
👤 예시 – IAM User 접근
IAMUser
↓ (IAMPolicy)
S3 Bucket
- 사용자 단위 접근 제어
🖥️ 예시 – EC2 Instance 접근
EC2 Instance
↓ (IAM Role)
S3 Bucket
- Access Key 없이 Role 기반 접근
🔁 Cross-Account Access
다른 AWS 계정의 IAM User 접근 허용
- Bucket Policy 사용
- Cross-Account 데이터 공유
🚫 Block Public Access (중요)
기업 데이터 유출 방지 목적
특징
- Bucket 단위 또는 Account 단위 설정
- Public Access를 원하지 않는다면 항상 ON 권장
- ACL / Bucket Policy 기반 퍼블릭 접근 차단
🌐 Amazon S3 – Static Website Hosting
S3로 정적 웹사이트 호스팅 가능
URL 형식
<http://bucket-name.s3-website-region.amazonaws.com>
<http://bucket-name.s3-website.region.amazonaws.com>
주의 사항
- 403 Forbidden 발생 시:
- Bucket Policy에 Public Read 필요
🕓 Amazon S3 – Versioning
객체 변경 이력을 보존
특징
- Bucket 단위 활성화
- 동일 Key 업로드 시:
- Version 1 → 2 → 3 …
- Best Practice
- 실수 삭제 방지
- 빠른 롤백 가능
주의
- Versioning 이전 객체 →
nullversion - Suspend 해도 기존 버전 삭제 ❌
🔁 Amazon S3 – Replication (CRR & SRR)
공통 조건
- Source / Destination 모두 Versioning 활성화
- 비동기 복제
- Cross-Account 가능
- 적절한 IAM 권한 필요
유형
- CRR (Cross-Region Replication)
- 컴플라이언스
- 지연 시간 감소
- 계정 간 복제
- SRR (Same-Region Replication)
- 로그 집계
- Prod ↔ Test 동기화
🔎 Replication 주의 사항
- 활성화 이후 새 객체만 복제
- 기존 객체:
- S3 Batch Replication 사용
- Delete Marker 복제 가능 (옵션)
- Version ID를 가진 Delete는 복제 ❌
- Replication Chaining 불가
- Bucket1 → Bucket2 → Bucket3 ❌
🗂️ Amazon S3 – Storage Classes 개요
객체 접근 빈도에 따라 비용 최적화
Storage Classes
- S3 Standard
- S3 Standard-IA
- S3 One Zone-IA
- S3 Glacier Instant Retrieval
- S3 Glacier Flexible Retrieval
- S3 Glacier Deep Archive
- S3 Intelligent-Tiering
수동 또는 Lifecycle Policy로 전환 가능
🧱 S3 Durability & Availability
Durability (내구성)
- 99.999999999% (11 9’s)
- 모든 스토리지 클래스 동일
- 1천만 객체 저장 시
- 평균 1만 년에 1개 손실
Availability (가용성)
- 클래스별 상이
- 예: S3 Standard
- 99.99%
- 연간 약 53분 다운
🟦 S3 Standard – General Purpose
- 99.99% Availability
- 자주 접근 데이터
- 낮은 지연, 높은 처리량
- 2개 시설 장애 견딤
- 사용 예
- Big Data
- 모바일 / 게임
- 콘텐츠 배포
🟨 Infrequent Access (IA)
S3 Standard-IA
- 99.9% Availability
- DR / 백업
S3 One Zone-IA
- 단일 AZ
- 99.5% Availability
- AZ 소실 시 데이터 손실
- 재생성 가능한 데이터에 적합
❄️ Amazon S3 Glacier 계열
장기 보관 / 아카이브 목적
Glacier Instant Retrieval
- 밀리초 단위 조회
- 최소 90일 보관
Glacier Flexible Retrieval
- Expedited: 1~5분
- Standard: 3~5시간
- Bulk: 5~12시간 (무료)
- 최소 90일
Glacier Deep Archive
- Standard: 12시간
- Bulk: 48시간
- 최소 180일
- 최저 비용
🧠 S3 Intelligent-Tiering
접근 패턴에 따라 자동 클래스 이동
특징
- 소액 모니터링 비용
- 조회 비용 없음
- 자동 이동 Tier
- Frequent
- Infrequent (30일 미접근)
- Archive Instant (90일)
- 선택 Tier
- Archive
- Deep Archive
📊 Storage Classes 요약
- 모든 클래스:
- 11 9’s 내구성
- Availability / AZ / 최소 보관 기간 / 조회 비용 상이