[AWS] S3: Simple Storage Service


목적: 안전하고 가변적인 Object 저장공간 제공 (ex. 구글 클라우드)


AWS에서 가장 먼저 release한 서비스로 역사도 깊고 시험도 많이 나오는 구간



S3


  • 안전하고 가변적인 Object 저장 공간을 제공
    • Object: 이미지, 동영상, 파일 등을 의미
    • 운영체제 등은 올리기 불가능
  • 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있음
  • 파일 크기: 0KB - 5TB
  • 저장 공간 무제한
  • Bucket이라는 이름을 사용(디렉토리와 유사함)
  • Bucket은 보편적인 namespace를 사용함
    • global함으로 region과 상관없이 unique한 이름을 생성해야 함



S3 Object 구성 요소


  • Key: 파일명
  • Value: 파일에 대한 데이터
  • Version ID
    • S3 고유 특징
    • 똑같은 파일도 다른 버전으로 업로드 가능
  • Metadata
    • 파일의 Owner, 업로드 날짜 등을 알 수 있음
    • 직접 수정 가능
  • CORS (Cross Origin Resource Sharing)



S3 Data Consistency Model


  • Read after Write Consistency (PUT): S3에 올라갔다면 파일을 바로 사용 가능 = delay X
  • Eventual Consistency (UPDATE, DELETE): S3에서 파일을 업데이트하거나 삭제 시 바로 사용 불가능 = delay O



S3 스토리지


  • 일반 S3
    • 가장 보편적으로 사용되는 스토리지 타입
    • 높은 내구성(Durability), 가용성(Availability)
      • 내구성: 데이터의 손실 없이 얼마나 잘 보관되는지
      • 가용성: 데이터 접근이 잘 되는가
  • S3- IA (Infrequent Access)
    • 자주 접근되지는 않으나 접근시 빠른 접근이 요구되는 파일이 많을 떄 유용
    • 일반 S3에 비해 비용은 저렴, 접근 시 추가 비용 발생
    • Muitl AZ를 통한 데이터 저장: 가용성이 높음
  • S3 - One Zone IA
    • 단일 AZ를 통한 데이터 저장
    • 단일 AZ에 의한 데이터 접근 제한 (조금은 낮은 가용성)
    • 데이터 접근 시 S3 - IA보다 20% 저렴한 비용
  • Glacier
    • 거의 접근하지 않을 데이터를 저장 시 유용
    • 매우 저렴한 비용
    • 데이터 접근시 대략 4-5시간 소요
  • Intelligent Tiering
    • 데이터 접근 주기가 불규칙할 때 매우 유용
    • 2가지 티어 존재
      • Frequent Tier: 약 1개월 동안 사용 o시 여기로 자동 분류
      • Infrequent Tier: 약 1개월 동안 사용 x시 여기로 자동 분류
    • 데이터 접근주기에 따라 두 가지 티어 중 하나로 선택됨
    • Frequent Tier가 비용이 약간 더 비쌈
    • 최고의 비용 절감 효율을 누릴 수 있음



S3 요금


  • GB당
  • PUT, GET, COPY 요청 시 횟수당
  • 데이터 다운로드 시 / 다른 리소스로 전송 시
  • Metadata (Object Tag)



S3 사용 용례


  • 파일 저장소(로그, 다양한 파일들 - 이미지, 비디오, 압축파일 등)
  • 웹사이트 호스팅: html, css 파일 등을 저장 / Route53으로 연결
  • CORS



S3 버킷 생성 시 주의점


  • 최초 S3 bucket 생성 시 비공개(PRIVATE)로 설정됨 = 외부에서 접근 시 Access deny
  • 비공개 된 bucket을 일부에게 open하는 방법
    • Bucket 정책 변경 (Bucket Policy): json 파일로 조작
    • 접근 제어 리스트 변경 (Access Control List)
      • 사용자 A에게는 파일 a, b의 권한을
      • 사용자 B에게는 파일 c의 권한을 주는 것처럼



S3 암호화


  • 파일 업로드 / 다운로드 시: SSL / TLS

  • 가만히 있을 시

    • SEE-S3
    • SSE-KMS
    • SSE-C
  • 예시

    • PUT 요청이 생성
      PUT /ruby-image.png HTTP/1.1
      Host: RubyBucket.s3.<Region>.amazonaws.com
      Date: Sun, 3 Apr 2022 03:00:23 GMT
      Authorization: authorization string
      Content-Type: text/plain
      Content-Length: 82253
      x-amz-meta-author: Ruby
      Expect: 100-continue
      x-amz-server-side-encryption-parameter: AES-256
      [82253 bytes of object data]
      
      • x-amz-server-side-encryption-parameter: PUT요청에 해당 파라미터가 있으면 암호화가 실행됨
        • Bucket 정책 설정을 통해 암호화 되지 않은 파일의 upload를 통제할 수 있음



AWS 서비스 설명 더보기


[AWS] Intro


Author: Ruby Kim
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Ruby Kim !
Comments
  TOC