AWS 기초이론 - S3

1. S3란?


  • Simple Storage Service
  • 안전하고 가변적인 Object 저장공간을 제공 -> ex. 구글 클라우드
  • 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있음
  • 파일 크기는 0KB부터 5TB까지 지원
  • 저장공간 무제한 제공
  • 디렉토리와 비슷한 개념인 Bucket이라는 이름을 사용
  • Bucket은 보편적인 namespace를 사용 -> 지역에 관계없이 Bucket 이름은 고유해야 한다는 의미


2. S3 Object 구성요소


  • Key value 형태
  • Version ID -> S3 고유 특징으로 같은 파일이지만 다른 버전으로 업로드 가능
  • Metadata : 데이터의 데이터란 의미
    • 언제 업로드, 어떤 팀이 오너인지 등등의 기타 정보들
  • CORS(Cross Origin Resource Sharing) : 한 Bucket의 파일은 다른 Buecket에서 접근 가능하게 하는 기능


3. S3 Data Consistency Model


  • Read after Write Consistency (PUT)
    • S3 Bucket에 파일을 올릴 때 PUT을 사용
  • Eventual Consistency(UPDATE, DELETE)
    • Bucket에 올라간 파일 내용을 변경하거나 삭제할 시 바로 나타나지 않음 -> 육안으로 보기에는 그래도 S3 내부에서는 그렇지 않음


4. S3 스토리지


일반 S3

  • 가장 보편적으로 사용되는 스토리지 타입
  • 높은 내구성, 가용성

S3 - IA(Infrequent Access)

  • 자주 접근되지 않으나 접근시 빠른 접근이 요구되는 파일이 많을시 유용
  • 일반 S3에 비해 비용은 저렴하나 접근시 추가 비용 발생
  • 멀티 AZ를 통한 데이터 저장 -> 가용성 높음

S3 - One Zone IA

  • 단인 AZ를 통한 데이터 저장 -> 서버 다운되면 사용 불가능
  • 단일 AZ에 의한 데이터 접근 제한 (조금 낮은 가용성)
  • 데이터 접근시 S3 - IA 보다 비용이 저렴

Glacier

  • 거의 접근하지 않을 데이터 저장 시 유용
  • 매우 저렴한 비용
  • 데이터 접근시 대략 4-5시간 소요

Intelligent Tiering

  • 데이터 접근 주기가 불규칙할 때 유용
  • 2가지 티어 존재
    • Frequent Tier
    • Infrequent Tier
  • 데이터 접근주기에 따라 두가지 티어중 하나로 자동 선택
  • Frequent Tier가 약간 더 비쌈
  • 최고의 비용 절감 효율을 누릴 수 있음


5. S3 요금


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


6. Bucket 생성 시 알아야할 것들


사용 용례

  • 파일 저장소
    • 로그, 다양한 파일들(이미지, 비디오, 압축파일 등)
  • 웹사이트 호스팅
    • html, css, js 같이 웹사이트를 돌리기 위한 파일들을 업로드한 뒤 S3를 실제 domain DNS로 사용 가능
  • CORS - Cross Origin Resource Sharing
    • Bucket A에서 Bucket B에 들어있는 데이터에 접근하는 것을 허용시켜주는 것

최초 S3 Bucket 생성시 비공개(Private) 상태

  • 2가지 방법이 존재
    • Bucket Policy : 버켓 정책 변경
      • 버킷 안 모든 파일에 적용
      • JSON 형태
    • Access Control List : 접근 제어 리스트 변경
      • 파일 하나하나에 다른 접근 권한 부여 가능


7. 암호화


2 가지 유형의 암호화 타입이 존재

  • 파일 업로드/다운로드 시
    • 직접 관리 필요 X -> AWS에서 직접 관리
    • SSL/TLS 가 담당
  • 가만히 있을시
    • 기본적으로 S3에 저장되어있는 Object들은 각자 고유 키를 가지고 있음
    • SEE-S3 : 마스터키(AES-256으로 구성)를 가지고 일정 시간마다 키값을 변경
    • SEE-KMS : SEE-S3와 마찬가지고 AWS에서 직접 관리해주는 것 + 언제,누가,어떻게 암호를 풀었는지 정보 추가 저장
    • SEE-C : 암호키를 사용자가 직접 다룰 수 있고 직접 키값 변경

암호화 과정

그림4

  • S3 파일 업로드시 PUT 요청이 들어가면서 헤더에 위 그림과 같은 정보가 들어감
  • 헤더에 x=amz-server-side-encryption-paramerer이 들어있다면 암호화요청을 건 것으로 간주하고 암호화 함



본 포스팅은 인프런 Simon Kim님의 ‘AWS(Amazon Web Service) 입문자를 위한 강의’ 강의를 듣고 정리한 내용을 바탕으로 복습을 위해 작성하였습니다. [강의 링크]


© 2021. By Backtony