article thumbnail image
Published 2023. 5. 28. 09:07

Amazon S3

S3는 AWS의 주요 구성 중 하나이며 무한하게 확장할 수 있는 스토리지라고 설명한다 많은 웹이 S3를 활용하고 있으며 많은 AWS 서비스 자체도 아마존 S3를 통합을 위해 사용한다

 

S3 use cases

  • 백업과 스토리지로 사용
  • 재해 복구의 용도
  • 아카이브용 -> 추후 매우 손쉽게 검색
  • 하이브리드 클라우드 스토리지
  • 동영상 파일이나 이미지등 미디어 호스트
  • 대규모 데이터 분석
  • 소프트웨어 배포
  • 정적 웹사이트 호스팅(나스닥은 7년간 데이터를 S3의 저장)

 

S3 - buckets

  • S3는 파일을 버킷에 저장하는데 버킷은 상위 레벨 디렉토리로 표시됨
  • S3 버킷의 파일은 객체라고하며 버킷은 모든 계정, 리전을 포함하여 고유한 이름을 가져야 한다
  • 버킷은 리전 레벨에서 정의됨
  • 전역 서비스처럼 보이지만 리전에 따라 생성
  • 네이밍컨벤션
    • 대문자 밑줄 불가
    • 3~63자
    • ip 주소불가
    • 소문자 숫자
    • xn 시작 불가
    • -3alias 마무리 불가
    • 소문자, 숫자, 하이픈만 사용하면 된다

 

Objects

  • 객체는 키를 가진다
  • 키는 객체가 있는 전체 경로를 의미하며, 폴더에 중첩되는 경우 상위 경로에 포함된다
    • s3://my-bucket/my_file.txt
    • s3://my-bucket/my_folder1/another_folder/my_file.txt
  • 키는 접두사와 객체 이름으로 구성
    • • s3://my-bucket/my_folder1/another_folder/my_file.txt
    • 마지막엔 반드시 객체 이름이 온다
  • S3 그 자체로는 디렉토리의 개념은 없다.
    • 다만 콘솔이나 UI를 보게 되면 다르게 생각하고 디렉토리를 만든다
  • 핵심은 키이며 슬래시를 포함하고 접두사와 객체 이름으로 만들어진다
  • 객체의 값은 본문의 내용
  • 최대 크기 5TB, 매우 큰 파일을 업로드하는 경우 멀티파트 업로드를 통해 나눠야한다.
    • 100MB 이상의 파일을 업로드할 경우 멀티파트 업로드 필요
  • 메타데이터(객체의 키 - 값 쌍 리스트) - 파일에 관한 요소나 메타 데이터
    • 태그 → 유니코드 키 값 쌍으로 최대 10개까지 가능하며 보안, 라이프사이클에 유용함
  • 버전관리를 활성화한 경우 버전 아이디가 붙는다

 

실습

Bucket name은 고유함.

버킷은 글로벌 서비스가 아닌 특정 리전에 할당

 

공개 URL을 통해 접근하는 경우 안될수도 있다. → 설정이 필요함

서명된 URL이 필요한데 AWS에서 부여

일반적인 클라우드 스토리지 서비스와 UX가 매우 유사해서 어려운점은 없다

 

S3 보안

User-Based

  • IAM 정책 - 특정 사용자에게 허용되어야 하는 API를 지정하거나 승인함

 

Resource-Based

  • S3 버킷 정책 - S3 콘솔에서 직접 할당할 수 있는 넓은 버킷 규칙으로 특정 사용자를 허용하거나 다른 계정의 사용자를 허용할 수 있다
    • 이를 버킷에 엑세스할 수 있는 Cross Account라고 함
    • 동시에 S3 버킷을 공개로 만드는 방법이기도 함
  • Object Access Control List (ACL) - 보다 세밀한 규칙 (비활성화 가능)
  • Bucket Access Control List (ACL) - 버킷 수준에서 할 수 있는 규칙으로 OACL보다 일반적(비활성화 가능)

가장 일반적인 방법은 버킷 정책을 사용하는 것이다.

그렇다면 어떤 상황에서 IAM 정책이 S3 객체로 엑세스 할 수 있는 경우인가

  • IAM 권한이 허용하거나 리소스 정책이 허용하는 경우
  • 엑세스에 명확한 거부가 없는 경우

 

Encryption

  • 암호키를 사용하여 객체를 암호화하는 방법

 

S3 Bucket Policies (버킷 정책)

  • JSON 기반의 정책
    • Resources: 정책이 적용되는 버킷과 객체를 알려줌
    • Effect: 허용/거부 (Action을 거부하거나 허용하는 방식)
    • Action: 허용하거나 거부할 수 있는 작업의 집합
    • Principal: 정책을 적용할 계정과 사용자를 정의
  • S3 버킷 정책의 의미
    • 버킷에 대한 퍼블릭 엑세스 권한을 부여 가능
    • 업로드시 객체를 강제 암호화
    • 다른 계정이 엑세스 할 수 있도록 하는 권한을 준다

 

Bucket settings for Block Public Access

  • 버킷을 생성할 때 설정한 것, 기업 데이터 유출을 방지하기 위해 AWS가 개발한 추가 보안 계층
  • S3 버킷 정책을 설정하여 공개로 만들어도 옵션이 활성화되어 있으면 절대 공개되지 않음
    • 공개하면 안된다면 이 버킷을 계속해서 설정해놓으면 됨
  • 계정 수준에서 설정이 가능하다

 

Static Website Hosting

  • S3에서 정적 웹사이트 호스팅과 인터넷 접근을 가능하게 함
  • URL은 리전에 따라 달라짐
  • public read 정책을 허용해야 함

 

Bucket Versioning

  • 파일을 버전 관리 가능하며 버킷 수준에서 활성화해야함
  • 동일한 키로 파일을 덮어쓰면 새로운 버전을 생성한다
  • 의도하지 않게 삭제하지 않도록 보호해서 이전 버전을 복구 가능
  • 이전 버전으로 쉽게 롤백할 수 있다

 

주의 사항

  • 버전 관리를 활성화 하기전에 버전 관리가 적용되지 않은 모든 파일은 null 버전을 갖게 된다
  • 버전 관리를 중단해도 이전 버전을 삭제하지 않는다

Versioning 실습

 

S3 복제 - Replication (CRR & SRR)

Cross-Region Replication (CRR): 교차 리전 복제

Same-Region Replication (SRR): 같은 리전으로 복제

  • 소스 버킷과 복제 대상 버킷 둘 모두 버전 관리 기능이 활성화되어야 한다
  • CRR은 리전이 달라야하고 SRR은 같아야함
  • 복제는 비동기식으로 이루어지며 다른 AWS 계정 간에도 버킷 복제가 허용됨
  • 복제 과정은 백그라운드에서 이루어짐
  • S3에 올바른 읽기 쓰기 권한이 필요
  • 사용 사례
    • CRR의 경우 법규 혹은 내부 체제 관리, 다른 리전에 있어 발생하는 지연 시간 줄이기, 계정 간 복제
    • SRR의 경우 다수의 S3 버킷간 로그 통합, 개발환경이 별도로 있어 운영 환경과 개발 환경간의 테스트를 위한 실시간 복제가 필요한 경우

 

복제 시 주의사항

  • 복제를 활성화 한 경우에는 이후 새로 추가하는 객체만 복제 대상
  • 기존의 객체를 복제하려면 S3 배치 복제를 사용해야 한다
    • 배치복제는 기존 객체부터 복제에 실패한 객체까지 복제할 수 있는 기능
  • 작업을 삭제
    • 소스 버킷에서 대상 버킷으로 삭제 마커를 복제하면 됨(optional)
    • 버전 ID로 삭제하는 경우 버전 ID는 복제되지 않아 다른 버킷에서 삭제 불가
  • 체이닝 복제는 불가능

 

버킷 객체 복제 실습

  • 기본적으로 삭제 마커 복제는 활성화 되지 않지만 해당 옵션을 활성화하면 삭제 마커도 한 버킷에서 다른 버킷으로 복제되니 주의
  • 또 주의할 점은 오리진 버킷에서 객체를 영구 삭제해도 복제 버킷에서는 삭제되지 않는다

 

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 Durability and Availability

  • Durablilty 내구성
    • S3로 인해 객체가 손실되는 횟수로 AWS는 뛰어난 내구성을 제공한다
    • 천만 개당 평균 10,000년에 한번씩 손실
    • 모든 스토리지 클래스의 내굿어은 동일
  • Availability 가용성
    • 서비스가 얼마나 용이하게 제공되는지를 나타낸다
    • 스토리지 클래스에 따라 다랄진다
    • 애플리케이션을 개발할 때 고려해야 한다

 

S3 Standard – General Purpose

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

 

S3 Storage Classes – Infrequent Access

  • 자주 엑세스하진 않지만 빠른 엑세스가 필요한 데이터
  • 스탠다드보단 저렴하지만 검색 비용이 청구된다

 

Amazon S3 Standard-Infrequent Access (S3 Standard-IA)

99.9% 높은 가용성, 그리고 재해 복구와 백업

 

Amazon S3 One Zone-Infrequent Access (S3 One Zone-IA)

단일 AZ 내에서는 높은 내구성을 갖지만 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 min
    • Standard → 3~5 hours
    • Bulk → 5~12 hours, free
  • 최소 보관기간 90일

 

Amazon S3 Glacier Deep Archive – for long term storage

  • Standard → 12 hours
  • Bulk → 48 hours

가장 저렴한 비용과 180일의 최소 보관 기간

 

S3 Intelligent-Tiering

  • 사용 패턴에 따라 자동으로 허가된 티어 간 객체를 이동할 수 있게 해준다
  • 소액의 월별 모니터링 비용과 티어링 비용이 발생한다
  • 검색 비용은 없다

 

수치는 중요하지 않고 내용만 이해하면 된다

'TIL > AWS' 카테고리의 다른 글

AWS S3 보안  (0) 2023.05.29
고급 Amazon S3  (0) 2023.05.28
애플리케이션을 빠르게 인스턴스화 & Elastic Beanstalk  (0) 2023.05.27
AWS Route 53  (0) 2023.05.25
Route 53을 이해하기 위한 DNS의 개념  (0) 2023.05.25
복사했습니다!