본문으로 건너뛰기
김신건의 로그

[AWS] S3: object storage, storage classes, lifecycle

· 수정 · 📖 약 1분 · 426자/단어 #aws #s3 #storage #object-store #cloud
S3, Simple Storage Service, S3 storage class, S3 lifecycle, S3 Intelligent-Tiering, S3 Glacier, S3 versioning

정의

S3 = AWS 의 object storage. bucket + key + object. 11 9’s durability, 무한 확장. 2026 시점 인터넷의 핵심 스토리지.

Storage Class

Class용도비용검색 latency
Standard자주 접근$0.023/GBms
Intelligent-Tiering자동 자주/덜 자주 분류variesms
Standard-IA가끔 접근더 cheap, retrieval feems
One Zone-IA단일 AZ + 가끔 접근더 cheapms
Glacier Instant Retrievalarchive + 즉시 접근매우 cheapms
Glacier Flexible Retrievalarchive매우 cheap분~시간
Glacier Deep Archive장기 archive가장 cheap12+ 시간

Lifecycle Policy

Rules:
  - Id: archive-old-logs
    Filter: { Prefix: logs/ }
    Transitions:
      - Days: 30
        StorageClass: STANDARD_IA
      - Days: 90
        StorageClass: GLACIER
    Expiration:
      Days: 365

비용 대폭 절감. 사용 안 하는 데이터를 자동 cheaper class 로.

Versioning

aws s3api put-bucket-versioning --bucket my --versioning-configuration Status=Enabled
  • 덮어쓰기 / 삭제 = 옛 버전 보존.
  • 실수 복구 가능.
  • 비용 2배 (옛 버전도 저장).

Object Lock (WORM)

Mode: GOVERNANCE | COMPLIANCE
RetainUntilDate: 2027-06-25
  • Write Once Read Many.
  • 컴플라이언스 (금융 / 의료).
  • COMPLIANCE: root user 도 삭제 불가.

Multipart Upload

sequenceDiagram
    Client->>S3: InitiateMultipartUpload (uploadId)
    par parallel parts
        Client->>S3: UploadPart 1
        Client->>S3: UploadPart 2
        Client->>S3: UploadPart N
    end
    Client->>S3: CompleteMultipartUpload (part etags)
    S3-->>Client: 완료
  • 큰 파일 (> 100MB) 권장, 5GB 초과필수.
  • 병렬 + 재시도 가능.

Presigned URL

url = s3.generate_presigned_url(
    'put_object',
    Params={'Bucket': 'my', 'Key': 'upload.zip'},
    ExpiresIn=3600
)
  • 클라이언트가 S3 에 직접 업로드/다운로드 (서버 우회).
  • 임시 URL.

Static Website Hosting

Bucket Property: Static Website Hosting
  Index document: index.html
  Error document: error.html
  • CloudFront 추가 = 글로벌 CDN 정적 사이트.

Event Notifications

flowchart LR
    Upload[Object 업로드] --> S3
    S3 -->|event| Lambda
    S3 -->|event| SQS
    S3 -->|event| SNS
    S3 -->|event| EventBridge
  • 새 파일 → 처리 자동.
  • 이미지 thumbnail 생성, 비디오 transcoding, 데이터 처리.

S3 Select / S3 Object Lambda

  • S3 Select: CSV/JSON/Parquet 의 SQL 일부 query.
  • S3 Object Lambda: GET 시 Lambda 가 transform (redact, watermark).

보안

flowchart TD
    Q[보안 layer]
    Q --> Block["Block Public Access (계정/bucket)"]
    Q --> Bucket[Bucket Policy]
    Q --> IAM[IAM Policy]
    Q --> ACL["ACL (legacy)"]
    Q --> Enc["Server-Side Encryption (SSE)"]
    Q --> KMS[KMS 키]
    Q --> Object[Object Lock]

Encryption

종류의미
SSE-S3S3 관리 key
SSE-KMSKMS 관리 key
SSE-C사용자 제공 key
DSSE-KMS이중 암호화

흔한 함정

WARNING

  1. Bucket 공개 사고 = “Block Public Access” 항상 켜기. CloudFront + OAC 권장.
  2. Versioning 후 비용 = 옛 버전 누적. lifecycle 로 정리.
  3. Lifecycle 의 retrieval fee = Glacier 에서 빨리 꺼내면 비용 큼.
  4. Multipart upload 정리 안 함 = 미완료 multipart 가 비용 발생. lifecycle AbortIncompleteMultipartUpload.

관련 위키

이 글의 용어 (4개)
[AWS] CloudFront: CDN, origin, behavior, signed URLcloud
정의 CloudFront = AWS 의 글로벌 CDN. 전세계 엣지 (600 PoP) 에서 사용자에게 가까이. 동작 Origin 종류 | Origin | 사용 | |---|---…
[AWS] EventBridge: 이벤트 버스, 스케줄러, partner sourcescloud
정의 EventBridge = AWS 의 통합 event bus. 옛 CloudWatch Events 의 후계. AWS service 이벤트 + custom 이벤트 + SaaS …
[AWS] KMS: 암호화 키 관리, envelope encryptioncloud
정의 KMS (Key Management Service) = 암호화 키 중앙 관리. envelope encryption + IAM 통합 + 감사 로그. 키 종류 | 종류 | 의미…
[AWS] Lambda: 서버리스 함수, 트리거, 동시성cloud
정의 AWS Lambda = 서버리스 함수 실행. 이벤트 트리거 → 함수 실행 → 결과 / 비동기 처리. 서버 관리 0. 트리거 종류 | 트리거 | 모델 | |---|---| |…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기