본문 바로가기

AWS/S3

AWS - S3란

S3 (Simple Storage Service)

인터넷 스토리지 서비스. 용량에 관계 없이 파일을 저장할 수 있고 웹(HTTP 프로토콜)에서 파일에 접근할 수 있다.

1. 사용 이유

  • S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다.
  • 비용은 EC2와 EBS로 구축하는 것보다 훨씬 저렴
  • S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다.
  • 동적 웹페이지와 정적 웹페이지가 섞여있을 때 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감.
  • 웹하드 서비스와 비슷하지만, 별도의 클라이언트 설치나 ActiveX를 통하지 않고 HTTP 프로토콜로 파일 업로드/다운로드 처리
  • S3 자체로 정적 웹서비스 가능

2. 버킷(Bucket)

  • 생성하면 default로 private.
  • 한 계정 당 최대 100개의 버킷 사용 가능.
  • 버킷 소유권은 이전할 수 없다.
  • 버킷의 이름은 region에 상관없이 globally unique 해야 한다.
  • 버킷 주소는 https://s3-리전이름.amazonaws.com/버킷이름
  • S3 데이터 모델은 flat structure라서 버킷에 hierarchie나 folder는 없다.
  • 하지만 keyname prefix (Folder1/Object1)를 사용해서 논리적인 hierarchies를 암시할 수 있다.
  • 버킷 안에 다른 버킷을 둘 수 없다.
  • Access Control
    • Bucket Policies
    • Access Control Lists
  • Path-Style URL에서 버킷 이름은 Region specific endpoint를 사용하지 않는 이상 도메인명에 포함되지 않는다.
  • Virtual Hosted Style URL에서 버킷이름은 URL의 도메인명의 일부가 된다.
  • Virtual hosting은 HTTP Host Header를 사용해서 REST API 콜의 버킷을 address하는 데 사용될 수 있다.

3. 객체(Object)

  • Object level storage(not a Block level storage)
  • 객체 하나의 크기는 1Byte ~ 5TB
  • 저장 가능한 객체 갯수 무제한
  • 객체마다 각각의 접근 권한 설정 가능
  • default로 private 이다.
  • 객체 metadata는 객체가 업로드 된 후에는 수정될 수 없고, 복사해서 수정해야 한다.
  • 객체는 Range HTTP header를 이용해서 부분적으로 검색할 수 있다.
  • 객체는 Pre-signed url를 사용해서 다운로드 할 수 있다.
  • 객체의 metadata는 response header에 반환된다.
  • Updating any metadata for an object requires all the metadata fields to be specified again

4. 암호화

  1. In Transit (S3로 데이터 업로드할 때)
    • SSL/TLS
  2. At Rest
    • 서버 사이드 암호화
      • None과 AES-256 중 선택 가능
      • S3 Managed Keys : SSE-S3
      • AWS Key Management Service, Managed Keys : SSE-KMS
      • Customer Provided Keys : SSE-C
    • 클라이언트 사이드 암호화
  3. 복호화는 데이터를 가져올 때 이루어진다.

5. S3 Tiers/Classes

  • 파일을 올리고 나서도 설정할 수 있다.
  • S3 Standard
    • 99.99% availability (아마존 게런티 99.9%)
    • 99.999999999% durablity.
    • 다수의 장치와 다수의 시설에 저장
    • 2개의 시설을 동시에 잃어도 지속되게끔 설계
  • S3 IA (Infrequently Accessed)
    • 자주 접근되지 않지만, 필요할 때 빠르게 접근할 필요가 있는 데이터에 적합
    • S3보다 저렴하다. 하지만 retrieval fee가 과금된다.
  • S3 One Zone IA
    • 이전의 RRS를 대체하는 새로운 클래스
    • RRS(Reduced Redundancy Storage)는 데이터 사본의 수를 줄여 비용을 낮춤. 원본에서 다시 생성할 수 있는 데이터 저장에 적함. (내구성 99.99%)
    • 자주 접근되지 않는 데이터를 위한 저비용 옵션
    • S3 IA와 같지만 다수의 AZ이 아니라 하나의 AZ에 저장
  • Glacier
    • 매우 저렴하지만 Archival only.
    • 종류는 Expedidited / Standard / Bulk
    • Standard의 retrieval time은 3~5시간