AWS[S3]

정지범·2024년 1월 3일
0

aws

목록 보기
8/26

Amazon S3

Section Introduction

  • Amazon S3는 AWS의 주요 구성 요소 중 하나
  • "무한하게 확장할 수 있는" 스토리지로 소개되고 있음
  • 많은 웹 사이트가 Amazon S3에 의존하고 있음
  • 많은 AWS 서비스들도 Amazon S3를 통합하여 사용함

Use Cases

  • 백업 및 스토리지
  • 재해 복구
  • 아카이브
  • 하이브리드 클라우드 스토리지
  • 애플리케이션 스토리지
  • 미디어 호스팅
  • 데이터 레이크 및 대규모 데이터 분석
  • 소프트웨어 배포
  • 정적 웹사이트 호스팅
  • Nasdaq: 7년간의 데이터를 S3 Glacier에 저장해 둠.
  • Sysco: 자체 데이터에 관한 분석을 실행하여 S3로부터 비즈니스 인사이트를 얻음

Buckets

  • Amazon S3는 파일을 "버킷"(디렉토리)에 객체 (파일)을 저장함
  • 버킷은 전체 지역과 모든 계정에서 전역적으로 고유한 이름을 가져야 함
    → AWS에서 전역적으로 고유한 단 하나의 이름이어야 함
  • 버킷은 리전 수준에서 정의
  • S3는 전역 서비스처럼 보이지만 버킷은 사실상 리전에서 생성됨
  • Naming convention:
    • 대문자 및 밑줄 사용 ❌
    • 길이는 3자 - 63자 사이
    • IP 주소 ❌
    • 소문자 또는 숫자로 시작
    • 접두사 xn--으로 시작 ❌
    • 접미사 -s3alias로 끝 ❌
    • 소문자, 숫자, 하이픈만 사용

Objects

  • 객체(파일)은 키(Key)를 가지고 있음
  • 키는 전체 경로를 의미함
    • s3://my-bucket/my_file.txt
    • s3://my-bucket/my_folder1/another_folder/my_file.txt
  • 키는 접두사(prefix)와 객체 이름으로 구성됨
    • s3://my-bucket/my_folder1/another_folder/my_file.txt
  • Amazon S3 그 자체로는 "디렉토리"의 개념은 없음 (UI에서는 그렇지 않게 보일 수 있음)
  • 슬래시("/")를 포함한 아주 긴 이름의 키만 존재함
  • 객체의 값은 본문의 내용이다.
    • 최대 객체 크기는 5 TB (5000 GB)
    • 매우 큰 파일을 업로드하는 경우엔 "멀티 파트 업로드 (multi-part upload)"를 사용해야 함
  • 메타데이터 (metadata): 텍스트 키/값 쌍의 목록 - 시스템 또는 사용자 메타데이터
  • 태그: 유니코드 키 / 값 쌍. 최대 10개. - 보안 / 수명 주기에 유용
  • 버전 ID: 버전 관리가 활성화된 경우

Security

User-Based

  • IAM Policeis: IAM에서 특정 사용자에 대해 허용되어야 하는 API 호출 지정

Resource-based

  • Bucket Policies: S3 콘솔에서 직접 할당할 수 있는 전체 버킷 규칙
    • 다른 계정의 사용자 허용 = S3 버킷에 액세서할 수 있는 교차 계정 (cross account)
  • Object Access Control List (ACL): 더 세분화된 권한 설정 (비활성화 가능)
  • Bucket Access Control List (ACL): 덜 일반적인 권한 설정 (비활성화 가능)

참고: IAM principal이 S3 객체에 액세스하려면

  • 사용자 IAM 권한이 허용(ALLOW)하거나 OR 리소스 정책이 허용해야 함
  • AND 명시적인 거부(DENY)가 없어야 함

Encryption: 암호화 키를 사용하여 Amazon S3의 객체를 암호화

S3 Bucket Policies

  • JSON based policies
    • Resources: 버킷과 객체
    • Effect: Allow / Deny
    • Actions: 허용하거나 거부할 수 있는 API 집합
    • Principal: 정책을 적용할 계정 또는 사용자
  • S3 버킷 정책을 사용하여 다음을 수행할 수 있다.
    • 버킷에 대한 공개 액세스 부여
    • 객체를 업로드할 때 암호화 강제화
    • 다른 계정에 액세스 권한 부여 (Cross Account)

Bucket settings for Block Public Access

  • 기업 데이터 유출을 방지하기 위한 추가 보안 계층
  • 버킷이 절대로 공개하면 안 되는 경우, 이 설정을 그대로 두면 됨
  • S3 버킷 정책을 설정하여 공개로 만들더라도 이 설정이 활성화되어 있다면 버킷은 절대 공개되지 않음
  • 계정 수준에서 설정 가능

Static Website Hosting

Versioning

  • Amazon S3에서 파일을 버전 관리할 수 있다.
  • 버전 관리는 버킷 수준에서 활성화된다.
  • 동일한 키를 덮어쓰면 "버전"이 변경된다: 1, 2, 3 ...
  • 버킷에 버전 관리를 적용하는 것이 좋은 방법이다.
    • 의도하지 않은 삭제로부터 보호된다. (버전을 복원할 수 있는 기능)
      • 만약, 한 파일 버전을 삭제하는 경우 사실상 삭제 마커를 추가한 것이다.
    • 이전 버전으로 쉽게 롤백할 수 있다.
  • 참고:
    • 버전 관리가 활성화되기 전에 버전 관리되지 않은 파일은 "null" 버전을 가지게 된다.
    • 버전 관리를 일시 중단해도 이전 버전은 삭제되지 않는다.

Replication (CRR & SRR)

  • 소스 버킷과 복제 대상 버킷에서 둘 모두 버전 관리 기능이 활성화되어야 한다.
  • Cross-Region Replication (CRR): 교차 리전 복제
  • Same-Region Replication (SRR): 같은 리전으로 복제
  • 버킷은 다른 AWS 계정에 속할 수 있음
  • 복제는 비동기적으로 진행됨 - 복제 과정은 백그라운드에서 이루어지게 됨
  • S3에 적절한 IAM 권한, 즉 읽기 / 쓰기 권한을 부여해야 함
  • 사용 사례:
    • CRR: 법규, 내부 체제 관리, 데이터가 다른 리전에 있어 발생할 수 있는 지연 시간 줄이기, 계정 간 복제
    • SRR: 로그 통합, 운영 환경과 개발 환경간의 실시간 복제

Replication (Notes)

  • 복제를 활성화한 후에는 새로운 객체만 복제 대상이 .
  • 기존의 객체를 복제하려면 S3 배치 복제 기능을 사용해야 함
    • 기존 객체와 복제에 실패한 객체까지 복제할 수 있는 기능
  • For DELETE operations
    • 소스 버킷에서 대상 버킷으로 삭제 마커를 복제하면 된다. (optional setting)
    • 버전 ID로 삭제하는 경우 버전 ID는 복제되지 않는다.
  • There is no "chaining" of replication
    • 버킷 1에서 버킷 2로의 복제가 있고, 버킷 2에서 버킷 3으로의 복제가 있는 경우 버킷 1에서 생성된 객체는 버킷 3으로 복제되지 않는다.

S3 Storage Classes

  • Amazon S3 Standard - General Purpose
  • Amazon S3 Standard-Infrequent Access (IA)
  • Amazon S3 One Zone-Infrequent Access
  • Amazon S3 Glacier Instant Retrieval
  • Amazon S3 Glacier Flexible Retrieval
  • Amazon S3 Glacier Deep Archive
  • Amazon S3 Intelligent Tiering
  • S3에서 객체를 생성할 때 클래스를 선택할 수도 있고 스토리지 클래스를 수동으로 수정할 수 있다.
  • 혹은 S3 수명 주기 구성을 사용해 스토리지 클래스 간에 객체를 자동으로 이동할 수 있다.

S3 Durability and Availability

Durability 내구성

  • 다중 가용 영역에서 객체의 높은 내구성 (99.999999999%)를 제공함
  • S3에 천만 개의 객체를 저장했을 때 평균적으로 10,000년에 한 번 객체 손실이 발생할 수 있음.
  • 모든 스토리지 클래스의 내구성은 동일함

Availability 가용성

  • 서비스가 얼마나 신속하게 사용할 수 있는지를 나타냄
  • 스토리지 클래스에 따라 다름
  • ex. S3 Standard의 가용성은 99.99%, 즉 1년에 약 53분은 사용할 수 없다는 뜻

S3 Standard – General Purpose

  • 99.99%의 가용성
  • 자주 액세스하는 데이터에 사용됨
  • 지연 시간이 짧고 처리량이 높음
  • AWS에서 두 개의 기능 장애를 동시에 버틸 수 있음
  • 사용 사례: 빅데이터 분석, 모바일 및 게임 애플리케이션, 콘텐츠 배포 등

S3 Storage Classes – Infrequent Access

  • 덜 빈번하게 액세스되지만 필요한 경우 빠른 액세스가 필요한 데이터에 사용됨
  • S3 Standard보다 저렴한 비용이지만 검색 비용이 발생함.
  • Amazon S3 Standard-Infrequent Access (S3 Standard-IA)
    • 99.9%의 가용성
    • 사용 사례: 재해 복구, 백업
  • Amazon S3 One Zone-Infrequent Access (S3 One Zone-IA)
    • 단일 AZ에서 높은 내구성(99.999999999%)을 갖지만 AZ가 파괴되면 데이터가 손실됨
    • 99.5%의 가용성
    • 사용 사례: 온프레미스 데이터의 보조 백업 복사본, 재생성 가능한 데이터 저장

Amazon S3 Glacier Storage Classes

  • 아카이빙 및 백업용으로 사용되는 저비용 객체 스토리지
  • 가격: 스토리지 비용 + 객체 검색 비용
  • Amazon S3 Glacier Instant Retrieval
    • 밀리초 단위의 검색 가능
    • 분기마다 한 번 액세스되는 데이터에 적합
    • 최소 보관 기간: 90일
    • 따라서 백업이지만 밀리초 이내에 액세스해야하는 경우 적합
  • Amazon S3 Glacier Flexible Retrieval (formerly Amazon S3 Glacier)
    • 데이터를 검색하는데 걸리는 시간:
      • Expedited: 1 - 5분
      • Standard: 3 - 5시간
      • Bulk: 5 - 12시간
    • 최소 보관 기간: 90일
  • Amazon S3 Glacier Deep Archive – for long term storage:
    • 데이터를 검색하는데 걸리는 시간:
      • Standard: 12시간
      • Bulk: 48시간
    • 최소 보관 기간: 180일

S3 Intelligent-Tiering

  • 소액의 월간 모니터링 및 자동 계층화 비용 발생 - 검색 비용은 없음
  • 사용량에 기반하여 객체를 자동으로 액세스 계층 간에 이동함.
  • Frequent Access tier (automatic): default tier
  • Infrequent Access tier (automatic): objects not accessed for 30 days
  • Archive Instant Access tier (automatic): objects not accessed for 90 days
  • Archive Access tier (optional): configurable from 90 days to 700+ days
  • Deep Archive Access tier (optional): config. from 180 days to 700+ days
profile
안녕하세요

0개의 댓글