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 이전 객체 → null version
  • 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 / 최소 보관 기간 / 조회 비용 상이