본문 바로가기
개발 관련 이야기

내가 보려고 만든 AWS S3 정리

by 꿈틀쓰 2022. 8. 28.

Serverless Object-based storage (객체 기반 저장소)

  • 폴더 역할을 하는 bucket 내부에 파일을 저장
  • bucket name은 도메인으로 쓰이기 때문에 세계에서 유일해야 함
  • 계층구조 없이 파일을 저장하지만 prefix를 이용해 구조화 가능
  • 최소 3개 AZ에 replication
  • 무제한 사용량 제공
  • 데이터는 object로 저장됨
    • key
    • value
    • version ID
    • metadata
  • single file 당 0Byte ~ 5TB까지 업로드 가능
  • Storage class
    • S3 standard - millisecond access time, frequent access data
    • Intelligent Tiering - 3-tier(frequent / infrequent / archive), access pattern 분석 후 적절한 tier에 저장, 비쌈
    • Standard IA(Infrequent Access) - millisecond acces time, infrequent access data
    • One-Zone IA - 1 AZ만 사용, 99.5% availability, infrequent access data, 안정성이 떨어지지만 다소 저렴
    • Glacier Instant Retrieval - rarely access data, millisecond access time 제공, saving에는 standard IA보다 저렴하지만 access할 때는 더 비쌈
    • Glacier Flexible Retrieval(기존 Glacier) - rarely access data, 1~5분 retrieval time, 5~12시간 bulk retrieval time, 최소 90일
    • Glacier Deep Archive - rarely access data, 12시간 retrieval time, 최소180일, 가장 저렴
    • S3 Lifecycle Management로 사용자 지정하여 저장 후 며칠이 지났을 때 다른 storage class로 옮길 수 있다.
  • 보안
    • 접근 권한
      • 처음 bucket 생성 시 default private
      • Access Control List - 레거시, 단순, 거의 안쓰임
      • Bucket Policies - JSON 타입으로 Effect/Principal/Action/Resource로 접근권한 정의
    • 암호화
      • 기본적으로 파일 전송 시 SSL/TLS로 전송됨
      • Server side encryption (at rest)
        • SSE-S3 - S3 Managed Keys, AES-256, 정기적 key rotation
        • SSE-KMS - envelope encryption, AWS와 사용자가 key를 manage, key에 대한 access 컨트롤
        • SSE-C - customer provided key, 사용자가 key를 manage, HTTPS만 가능
      • Client side encryption (at rest, in transit)
        • 사용자가 직접 파일 encrypt before uploading
  • Data Consistency
    • Read after Write for NEW PUT - 새로운  파일 업로드 시 바로 반영
    • Eventual consistency for OVERWRITE / DELETE - 덮어쓰기/삭제 등 기존 파일에 대한 작업은 반영되기 까지 몇초가 소요됨
  • Versioning - 파일의 모든 버전을 저장한다. enable하면 disable은 안됨. suspended만 가능
  • Cross Region Replication (CRR) - 이 기능 활성화 하면 자동적으로 다른 리전에 복사본을 생성, durability / failover에 좋음, versioning이 활성화되어 있어야 한다
  • Transfer Acceleration
    • 아주 먼 거리에 있는 end-user와 S3 bucket 사이에 데이터 fast / secure 데이터 전송 기능.
    • CloudFront의 Edge location을 사용한다.
  • Presigned URLs - private file에 대한 임시 access를 위한 url
  • MFA delete - 파일 삭제 시 mfa 요구(accidentally delete를 방지), versioning on 해야

 

댓글