AWS: S3 (Simple Storage Service)

GonnabeAlright·2022년 3월 8일
0
post-thumbnail

S3 (Simple Storage Service)

  • S3는 스토리지로서 웹 서비스 인터페이스를 통해 사용 가능
  • S3는 Object Base이며 0 Byte부터 5TB까지 업로드 가능
  • 모든 Object는 Bucket에 저장
  • S3의 이름은 반드시 고유해야 함 (Universal Name Space)
  • S3에 업로드할 때 업로드에 성공하면 HTTP 200 Code를 전달 받음
  • Object는 다음을 포함


    Key: Object의 이름
    Value: 데이터이며 연속적인 바이트로 이루어져 있음
    Version ID: 같은 데이터라도 버전 별로 나눌 수 있기에 중요
    Metadata: 데이터의 데이터

  • Read after Write consistency for PUTS of new Object: 새로운 키로 업로드한 데이터는 분산 복제가 끝나기 전까지 읽어올 수 없음 (신규 업로드시만 해당)
  • Eventual Consistency for overwrite PUTS and DELETES: 빠른 응답성을 위해 분산복제가 완료되기 전에는 과거 데이터를 읽어올 수도 있음 (덮어쓰기 PUT, DELETE 해당)
  • 99.99999999999% 내구성 보장
  • Tiered Storage Available, Lifecycle Management, Versioning, Encryption, MFA Delete 등의 기능 제공
  • ACL, Bucket Policy로 접근 제어 기능 제공
  • CRR(Cross Region Replication): 한 리전의 S3를 다른 리전의 S3에 업로드마다 복제하는 것
  • Transfer Acceleration: Cloudfront의 Edge location(아마존의 백본 네트워크)를 이용하여 빠르게 전송하는 것

S3 Class

  • Standard: 99.99% 가용성, 99.99999999999% 내구성, 다수의 시설 내 다수의 장비에 중복 저장되도록 설계, 2개 AZ가 파괴되어도 유지 가능
  • S3-IA(Standard-Infrequent Access): 자주 접근하지 않지만 필요시 빨리 접근해야하는 데이터를 위한 클래스로 S3보다 싸나 검색비용이 발생
  • S3 One Zone-IA: IA보다 싸지만 다수의 AZ에 복사하지 않음
  • S3 - Intelligent Tiering: 업로드 주기가 매우 불규칙한 경우의 스토리지
  • S3 Glacier: 데이터 저장용 S3으로 매우 싸나 검색시간이 매우 오래 걸릴 수 있음
  • S3 Glacier Deep Archive: 가장 싼 스토리지 클래스로 12시간
  • 가용성은 Standart가 99.99%, Intelligent-Tiering, IA가 99.9%, One Zone-IA는 99.5%, Glacier(Deep Dive)는 99.9%
  • AZ의 경우 One Zone IA를 제외하고 모두 3개 이상에 저장

S3 Security

  • 암호화는 Client Side와 Server Side로 나뉘며 Client Side는 Client에서 S3로 전송될 때의 암호화(Data at transit)를, Server Side는 S3에 저장될 때의 암호화(Data at rest)를 의미한다.
  • Server Side Encryption


    SSE-S3: S3의 고유한 키로 암호화를 실시하며 암호화 주체가 S3가 되는 방식, 암호 알고리즘은 AES-256
    SSE-KMS: Key Management Service를 이용하여 객체를 암호화하는 방식으로 KMS 고객 마스터 키(CMK)를 활용한다. SSE-S3와 달리 고객의 키를 제어할 수 있다.
    SSE-C: 고객(Customer)이 제공하는 키로 암호화를 진행하는 방식으로 제공된 암호화 키를 사용하여 디스크를 쓰거나 해독할 때 객체에 액세스할 때의 모든 암호화를 관리한다. 제공된 암호화키는 저장되지 않는다.

  • Client Side Encryption
    S3로 데이터를 보내기 전에 암호화
    KMS에 저장된 고객 마스터키를 사용하여 암호화
    애플리케이션 내 마스터키를 사용하여 암호화

S3 Versioning

  • 객체의 모든 버전을 저장함
  • 한 번 사용하면 해제 불가능, 중지만 가능
  • Life Cycle과 통합하여 사용하며 MFA Delete 제공
  • 최신 버전의 오브젝트를 삭제하더라도 Versioning에 남아있음
  • 최신 버전이 완전 삭제되면 그 직전 버전이 최신 버전이 됨

S3 Life Cycle

  • 일정 기간이 지나면 자동적으로 다른 스토리지 티어로 이동하게 하는 서비스
  • 현재 버전과 이전 버전(Versioning)에 적용 가능
  • 만료 구성(Configure Expiration)을 통해 일정 기간이 지난 현재 버전과 이전 버전의 오브젝트 삭제 가능


    현재 버전: 지정된 생성기간 이후 현재 버전의 오브젝트 삭제
    이전 버전: 객체의 (이전 버전으로) 지정된 기간 후 이전 버전의 오브젝트 삭제

  • 불완전한 멀티파트 업로드를 지원하여 S3에 제대로 업로드되지 않은 데이터를 삭제할 수 있음

S3 CRR(Cross Region Replication)

  • Source S3 Bucket과 Destination S3 Bucket에 Versioning이 활성화되어야 함
  • 복제할 권한을 부여할 IAM Role 필요 (GetReplicationConfiguration, ListBucket)
  • 복제 구성을 추가하기 전의 파일들은 복사되지 않음 (복제 구성을 추가한 후 생성된 객체들을 대상으로 함)
  • 연속적으로 업데이트 되는 파일들은 자동으로 복제됨
  • Delete Marker, 암호화된 객체는 복제되지 않음

S3 Transfer Acceleration

  • S3에 직접 업로드하는 것이 아닌 Cloudfront의 Edge Location Network를 이용하여 Edge Location에 업로드하고 그것을 S3로 옮기는 서비스

0개의 댓글