S3

개요

  • Amazon S3는 백업과 스토리지로 활용되는 오브젝트 스토리지이다.

  • 용도

    • 파일을 저장하는 용도로 쓰거나 디스크처럼 쓸 수도 있다.

    • 재해 복구의 용도로도 쓸 수 있다. 예를 들어 리전이 다운되는 경우 데이터를 다른 리전으로 이동시킬 때 백업해둘 수 있다.

    • 하이브리드 클라우드 스토리지로 쓸 수 있다. 온프레미스에 스토리지가 있지만 클라우드로 확장하고자 한다면 Amazon S3를 사용할 수 있다.

    • 애플리케이션을 호스팅하고 동영상 파일이나 이미지 등 미디어를 호스팅할 수 있다.

    • 데이터 레이크를 보유하여 다량의 데이터를 저장하고 빅 데이터 분석을 수행하기 위해 사용할 수 있다.

    • 정적 웹 사이트를 호스팅할 수 있다.

  • 파일을 버킷에 저장하는데, 버킷은 상위 레벨 디렉토리로 표시된다.

  • 버킷은 계정 별로 생성할 수 있으며, 버킷의 이름은 AWS 전역적으로 고유해야 한다. 리전 수준에서 정의된다.

  • 버킷 이름에는 대문자나 밑줄이 없어야 하고, 길이는 3자에서 63자 사이여야 하며, IP여서는 안 되고, 소문자나 숫자로 시작해야 한다. 문자와 숫자, 하이픈만 사용하면 된다.

    • 하나의 객체나 파일에는 키가 매핑된다.

    • Amazon S3 키는 파일의 전체 경로이다. 예를 들어 my_file.txt 파일의 키는 my_file.txt이다.

    • 접두사와 객체 이름으로 구성된다. 접두사는 파일명을 제외한 상위 디렉토리들이 된다. 하지만 Amazon S3 자체에서는 디렉토리라는 개념을 갖고 있지 않다.

  • 객체

    • S3 버킷의 파일

    • 키에 매핑되는 값이다.

    • 파일 등 어떤 형식이든 Amazon S3로 업로드할 수 있다.

    • 최대 객체 크기는 5TB이다. 하지만 파일이 크면 멀티파트 업로드를 사용해서 해당 파일을 여러 부분으로 나눠 업로드해야 한다.

    • 객체에는 메타데이터를 저장할 수 있다. 시스템이나 사용자에 의해 설정될 수 있다.

    • 태그는 보안과 수명 주기에 유용하며, 최대 10개까지 저장 가능한 유니코드 키-값 쌍이다.

    • 버전 관리를 활성화한 경우 버전 ID를 가질 수 있다.

웹사이트

  • Amazon S3를 활용하여 정적 웹 사이트를 생성할 수 있다.

  • 웹 사이트 URL은 AWS 리전과 버킷 이름에 따라 달라진다. ex) http://bucket-name.s3-website-aws-region.amazonaws.com

  • 버킷에 대한 공개 읽기가 활성화되어야 브라우저에서 접근 가능하다.

버전 관리

  • 버전 관리 기능을 사용하는 경우 동일한 키를 업로드하고 해당 파일을 덮어쓰는 업로드를 할 때마다 버전이 생성된다.

  • 버전 관리를 통해 의도하지 않게 객체가 삭제되지 않도록 보호할 수 있다. 한 파일의 버전을 삭제할 때 삭제 마커를 추가하고 실제로 지우지 않는다. 따라서 삭제 마커 자체를 지우면 데이터를 원상복구할 수 있는 것이다.

  • 이전 버전으로 쉽게 롤백할 수도 있다.

  • 버전 관리를 활성화하기 전에 버전 관리가 적용되지 않은 모든 파일은 널(null) 버전을 갖게 된다.

  • 버전 관리를 중단해도 이전 버전을 삭제하지 않는다.

복제

  • 소스 버킷과 복제 대상 버킷 둘 모두 버전 관리 기능이 활성화되어야 한다.

  • 서로 다른 AWS 계정간에도 사용할 수 있다.

  • CRR은 교차 리전 복제이고, SRR은 동일 리전으로 복제이다.

    • CRR은 컴플라이언스, 즉 법규나 내부 체제 관리, 그리고 데이터가 다른 리전에 있어 발생할 수 있는 지연 시간을 줄일 경우에 사용한다. 또는 계정 간 복제에도 쓸 수 있다.

    • SRR은 다수의 S3 버킷 간의 로그를 통합할 때나, 개발 환경이 별도로 있어 운영 환경과 개발 환경간의 실시간 복제를 필요로 할 때 사용될 수 있다.

  • 복제는 비동기로 백그라운드에서 수행된다.

  • 복제 기능이 정상적으로 실행되려면, S3에 읽기/쓰기가 가능하도록 IAM 권한을 부여해야 한다.

  • 스토리지 계층 복제를 활성화한 후에는 새로 추가되는 객체만 복제 대상이 된다.

  • 기존의 객체를 복제하려면 S3 배치 복제 기능을 사용해야 한다.

  • 소스 버킷에서 대상 버킷으로 삭제 마커를 복제해야 삭제된 파일을 다른 버킷에서 노출하지 않는다.

  • 버전 ID를 기반으로 객체를 삭제하는 경우 이는 복제되지 않는다.

  • A -> B -> C 버킷과 같은 체이닝 복제는 불가하다. A -> B, A -> C로 각각 복제해야 한다.

  • Batch Operations 작업을 이용한 배치 복제를 사용하면 복제 구성이 이루어지기 전에 있었던 객체, 이전에 복제되었던 객체, 복제에 실패했던 객체를 복제할 수 있다.

스토리지 계층

  • 모든 스토리지 계층에 Multi AZ rks 99.99999999999% 의 내구성을 보장한다. Amazon S3에 천만 개의 객체를 저장했을 때 평균적으로 10,000년에 한 번 객체 손실이 예상되는 정도이다.

  • 가용성은 스토리지 계층마다 다르다.

  • 스토리지 클래스를 수동으로 변경하거나 Amazon S3 수명 주기 구성을 사용해 스토리지 클래스 간에 객체를 자동으로 이동시킬 수 있다.

종류

  • Amazon S3 Standard

    • 99.99% 가용성을 보장한다.

    • 자주 액세스하는 데이터에 사용되며, 가장 기본적으로 사용하는 스토리지 유형이다.

    • 지연 시간이 짧고 처리량이 높다.

    • AWS에서 두 개의 기능 장애를 동시에 버틸 수 있다.

    • 빅 데이터 분석, 모바일과 게임 애플리케이션 그리고 콘텐츠 배포 등에 사용할 수 있다.

  • Amazon S3 Infrequent Access

    • 자주 액세스하지는 않지만 필요한 경우 빠르게 액세스해야 하는 경우 사용한다.

    • S3 Standard보다 비용이 적게 들지만 조회할 때 마다 비용이 발생한다.

    • 99.9% 가용성을 보장한다.

    • 재해 복구와 백업 용도로 사용할 수 있다.

  • Amazon S3 One Zone-Infrequent Access(IA)

    • 단일 AZ에서 동작하며, 높은 내구성을 갖지만 AZ가 파괴된 경우 데이터를 잃게 된다.

    • 99.5% 가용성을 보장한다.

    • 온프레미스 데이터를 2차 백업하거나 재생성 가능한 데이터를 저장하는 데 쓰인다.

  • Glacier Instant Retrieval

    • 아카이빙과 백업을 위한 저비용 객체 스토리지

    • 밀리초 단위로 조회가 가능하다.

    • 최소 보관 기간이 90일이기 때문에 백업이지만 밀리초 이내에 액세스해야 하는 경우 적합하다.

  • Glacier Flexible Retrieval

    • Expedited는 데이터를 1~5분 이내에 받을 수 있고, Standard는 데이터를 돌려받는 데 3~5시간 소요되고, Bulk는 무료지만 데이터를 돌려받는 데 5~12시간이 소요된다.

    • 최소 보관 기간은 90일이다.

  • Glacier Deep Archive

    • 조회 시 12시간이 걸리는 Standard와 48시간이 걸리는 Bulk 타입이 있다.

    • 비용이 가장 저렴하고 최소 보관 기간이 180일이다.

  • Amazon S3 Intelligent Tiering

    • 사용 패턴에 따라 액세스 티어 간에 객체를 자동으로 이동시켜준다.

    • 소액의 월별 모니터링 비용과 티어링 비용이 발생하지만 조회 비용은 없다.

    • FrequentAccess 티어는 자동이고 기본 티어이다.

    • Infrequent Access 티어는 30일 동안 액세스되지 않은 객체 전용 티어이다.

    • Archive Instant Access 티어는 90일 동안 액세스되지 않은 객체 전용 티어이다.

    • Archive Access 티어는 선택 사항이며 90일에서 700일 이상까지 구성할 수 있다.

    • Deep Archive Access 티어는 선택 사항이며 180일에서 700일 이상 액세스하지 않는 객체를 저장할 수 있다.

  • Amazon S3 Express One Zone

    • 가장 자주 액세스하는 데이터와 지연 시간에 민감한 애플리케이션에 대해 10밀리초 미만의 일관된 데이터 액세스를 제공하도록 특별히 설계된 고성능 단일 가용 영역 스토리지 클래스이다.

    • S3 Standard에 비해 데이터 액세스 속도는 최대 10배 빠르고 요청 비용은 최대 50% 저렴하다.

    • 데이터 액세스 속도를 크게 개선하여 모델 데이터세트를 더 빠르게 처리함으로써 모델 훈련 및 개발을 가속화할 수 있다.

수명 주기 규칙

  • 수명 주기 규칙을 이용하거나 직접 수작업으로 다른 스토리지 클래스 간에 객체를 옮길 수 있다.

    • 예를 들어 Standard로부터 자주 접근되지 않는 객체를 Standard IA, Intelligent Tiering, One-Zone IA 등으로 옮길 수 있다.

    • 오래된 객체를 아카이브화하려면 Glacier 티어나 Deep Archive 티어로 이전할 수 있다.

  • Transition Actions

    • 다른 스토리지 클래스로 이전하기 위한 객체를 설정한다.

    • 예를 들어 객체가 생성된 지 60일 후에는 Standard 클래스로 이전하고 6개월 후에는 Glacier로 이전해서 아카이브화 한다고 정의할 수 있다.

    어떤 티어로든 최소 30일은 지난 후에야 옮길 수 있다.

  • Expiration actions

    • 일정한 시간 뒤에 객체를 만료시켜 삭제하도록 설정할 수 있다.

    • 예를 들어 액세스 로그 파일을 365일 후에 삭제하도록 설정할 수 있다.

    • 버저닝을 활성화했다면 오래된 버전의 객체를 만료시켜 삭제할 수도 있다.

    • 멀티파트 업로드가 한참 전에 시작되었지만 아직 완료되지 않은 불완전한 데이터를 삭제할 수 있다.

  • 특정한 접두어에 대해 규칙을 지정하여 버킷 전체에 적용하거나 버킷 안의 특정한 경로에 적용할 수 있다.

  • 특정한 객체 태그에 대해 규칙을 지정할 수도 있다.

Q. EC2에 구동된 애플리케이션에 사용자가 프로필 사진을 업로드하면 일단 Amazon S3에 업로드하고 이미지 섬네일을 생성한다. 섬네일은 원본 사진으로부터 쉽게 재생성할 수 있으며 60일 동안만 보관하고자 한다. 원본 이미지는 60일 동안 즉시 조회 가능해야 하고 60일 이후에는 최장 6시간 동안 기다릴 수 있도록 한다. 어떻게 아키텍처를 디자인할 것인가?

A. S3 원본 이미지는 Standard 클래스에 두고 60일 후에 Glacier로 이전하도록 한다. 섬네일 이미지는 One-Zone IA에 두어 60일 후에 만료시켜 삭제되도록 할 수 있다.

Q. 30일 동안은 삭제된 S3 객체를 즉각적으로 복구할 수 있어야 하고, 30일이 지난 후 최장 365일 동안은 삭제된 객체를 48시간 이내에 복구할 수 있어야 한다. 어떻게 아키텍처를 디자인할 것인가?

A. S3 버저닝을 활성화해서 객체 버전을 보관해야 하고, 최신 버전이 아닌 객체들을 Standard IA로 이전하도록 한다. 이후 Glacier Deep Archive로 이전할 수 있다.

  • 객체를 다른 클래스로 이전할 최적의 날짜를 결정할 때 Amazon S3 Analytics를 이용하면 편리하다.

    • Standard나 Standard IA에 관한 추천사항을 제시할 수 있지만, One-Zone IA나 Glacier와는 호환되지 않는다.

    • S3 Analytics는 매일 csv 보고서를 생성하고 추천사항과 통계를 제공한다.

    • 데이터 분석 결과는 24~48시간 정도 기다려야 나올 수 있다.

요청자 지불

  • 일반적으로 버킷과 관련된 모든 Amazon S3 스토리지 및 데이터 전송 비용을 버킷 소유자가 지불한다.

  • 버킷들에 객체를 보관하고 있고, 사용자가 버킷으로부터 파일을 다운로드하면 네트워킹 비용이 버킷 및 객체 소유자에게 청구된다.

  • 요청자 지불 버킷을 활성화하면, 파일 요청자가 객체 데이터 다운로드 비용을 지불하도록 할 수 있다.

  • 대량의 데이터 셋을 다른 계정과 공유하려고 할 때 유용하다.

  • 요청자는 AWS에서 인증을 받은 상태여야 AWS가 객체에 대한 다운로드 요청자에게 비용을 청구할 수 있다.

이벤트 알림

  • Amazon S3에서는 객체가 생성되었거나 객체가 삭제되었거나 객체가 복구되었거나 복제되는 등의 이벤트를 발생시킬 수 있다.

  • 이벤트들을 필터링하여 알림을 SNS 토픽, SQS Queue, 람다 함수 등에 전달해 작업을 처리할 수 있다.

  • 이벤트들은 보통 몇 초 안에 그런 대상으로 전달되지만, 간혹 몇 분 정도 걸릴 수도 있다.

  • 이벤트 알림이 작동하려면 IAM 역할을 갖고 있어야 한다.

    • S3 서비스가 데이터를 SNS 토픽에 직접 전송하려면 SNS 리소스 정책을 매핑해야 한다.

    • S3 서비스가 SQS Queue에 데이터를 전송하도록 하려면 SQS 리소스 액세스 정책을 매핑해야 한다.

    • S3 서비스가 람다 함수를 호출하려면 람다 리소스 정책을 매핑해야 한다.

  • Amazon EventBridge

    • 모든 이벤트는 Amazon S3 버킷으로 이동 후 Amazon EventBridge로 모인다.

    • EventBridge에서 규칙을 설정하여 18가지 AWS 서비스에 전송할 수 있다.

    • EventBridge를 사용하면 고급 필터링 옵션을 사용할 수 있다. 메타데이터, 객체 사이즈, 이름 등으로 필터링 가능하다.

    • 한꺼번에 다수의 대상(Step Functions, Kinesis Streams, Firehose 등)에 이벤트를 전송할 수 있다.

    • 아카이빙, 이벤트 중계, 안정적인 전달 등 여러 기능을 제공한다.

성능

기본 성능

  • 아마존 S3는 기본적으로 높은 요청률과 100-200ms 지연 시간을 제공하기 위해 자동으로 스케일링된다.

  • 버킷 내에서 prefix 마다 초당 3,500개의 PUT, COPY, POST, DELETE 요청을 보낼 수 있고, 5500개의 GET, HEAD 요청을 보낼 수 있다.

  • 버킷의 접두사 수에는 제한이 없다. 만약 4개의 접두사에 균등하게 조회 요청을 분산하면 초당 최대 22,000개의 요청을 처리할 수 있다.

성능 최적화

  • 멀티파트 업로드

    • 100MB가 넘는 파일에는 멀티파트 업로드를 권장하고, 5GB가 넘는 파일에는 반드시 멀티파트 업로드를 사용해야 한다.

    • 업로드를 병렬화하므로 전송 속도를 높여 대역폭을 최대화할 수 있다.

    • 모든 청크가 업로드되면 이를 큰 파일로 다시 합칠 수 있다.

  • S3 전송 가속화

    • 업로드 및 다운로드 속도 향상을 위해 파일을 AWS 엣지 위치로 먼저 전송하고 이후 대상 지역의 S3 버킷으로 데이터가 전달되도록 하는 방식이다.

    • 현재 200개가 넘는 엣지 위치가 있다.

    • 전송 가속화는 멀티파트 업로드와 호환된다.

    • 공공 인터넷의 사용량을 최소화하고 프라이빗 AWS 네트워크의 사용량을 최대화한다.

  • Byte-Range Fetches

    • 파일의 특정 바이트 범위를 조회해 전체 조회 요청을 병렬화할 수 있다.

    • 특정 바이트 범위를 가져오는 데 실패하였다면 더 작은 바이트 범위로 다시 조회 시도를 할 수 있다.

    • 실패 시 복원력이 향상되어 다운로드 속도를 높이는 데 사용할 수 있다.

    • 파일의 일부, 예를 들면 헤더 부분만 조회 요청을 보낼 수 있어, 일부 데이터만 필요하다면 빠르게 조회 가능하다.

배치 작업

  • 단일 요청으로 기존 S3 객체에서 대량 작업을 수행하는 서비스

  • 제공되는 기능은 다음과 같다.

    • S3 객체들의 메타데이터와 프로퍼티를 일괄 수정할 수 있고, 배치 작업으로 S3 버킷 간에 객체를 복사할 수 있다.

    • S3 버킷 내 암호화되지 않은 모든 객체를 암호화할 수 있다.

    • ACL이나 태그를 수정할 수 있다.

    • S3 Glacier에서 한 번에 많은 객체를 복원할 수 있다.

    • Lambda 함수를 호출해 S3 Batch Operations의 모든 객체에서 사용자 지정 작업을 수행할 수 있다.

  • S3 Batch Operations를 사용하면 재시도를 관리하거나 진행 상황을 추적하고 작업 완료 알림을 보내고 보고서 생성을 할 수 있다.

  • S3 Inventory를 통해 객체 목록을 가져오고 S3 Select를 통해 필터링하여 S3 배치에 전달할 객체를 선별한다.

  • S3 Batch Operations에 수행할 작업, 매개 변수, 객체 목록을 전달하면 S3 배치가 작업을 수행하고 객체를 처리한다.

Storage Lens

  • 전체 AWS 조직에서 스토리지를 이해하고, 분석하고, 최적화하는 데 도움이 되는 서비스이다.

  • 이상 징후를 발견하고, 비용 효율성을 파악하며, 전체 AWS 조직에 보호 모범 사례를 적용할 수 있다.

  • 30일 동안의 사용량 및 활동 메트릭이 제공된다.

  • 조직, 특정 계정, 지역, 버킷, 접두사 수준에서 데이터를 집계할 수 있다.

  • 모든 메트릭을 CSV, parquet 형식으로 S3 버킷에 내보낼 수 있다.

  • 요약 인사이트, 데이터 보호, 비용 효율성을 분석해 Amazon S3 사용을 최적화할 수 있다.

  • 기본 대시보드 혹은 커스텀 대시보드를 사용할 수 있다.

  • 기본 대시보드는 다음과 같은 특징을 가진다.

    • 무료 및 고급 지표에 대한 요약된 인사이트와 트렌드를 확인할 수 있다.

    • 여러 지역과 여러 계정의 데이터가 표시된다. 조회하고 싶은 지역, 계정, 버킷, 스토리지 클래스를 지정할 수 있다.

    • Amazon S3에 의해 사전 구성된다.

    • 삭제할 수 없지만 비활성화할 수는 있다.

    • 총 저장 용량, 객체 수, 평균 객체 크기, 보유한 버킷 수, 계정 등의 정보를 확인할 수 있다.

메트릭

  • 요약 메트릭

    • 일반적인 S3 스토리지에 대한 정보

    • StorageBytes, ObjectCount 등

    • 빠르게 커지거나 사용하지 않는 버킷, 접두사를 식별하는 용도로 사용 가능하다.

  • 비용 최적화 메트릭

    • 스토리지 비용을 관리하고 최적화할 수 있는 인사이트 제공

    • NonCurrentVersionStorageBytes, IncompleteMultipartUploadStorageBytes 등

    • 어떤 버킷이 다중 파트 업로드에 실패했는지 또는 어떤 객체를 더 저렴한 스토리지 클래스로 전환할 수 있는지 확인하는 용도로 사용 가능하다.

  • 데이터 보호 메트릭

    • 데이터 보호 기능에 대한 인사이트를 제공한다.

    • VersioningEnabledBucketCount, MFADeleteEnabledBucketCount, SSCKMSEnabledBucketCount, CrossRegionReplicationRuleCount 등

    • 데이터 보호 모범 사례를 따르지 않는 버킷을 식별하는 용도로 사용 가능하다.

  • 액세스 관리 메트릭

    • S3 버킷 소유권에 대한 인사이트를 제공한다.

    • 버킷이 현재 어떤 객체 소유권 설정을 사용하고 있는지 식별할 수 있다.

  • 이벤트 메트릭

    • S3 이벤트 알림에 대한 인사이트를 제공한다.

    • EventNotificationEnabledBucketCount

  • 퍼포먼스 메트릭

    • S3 전송 가속에 대한 인사이트를 제공한다.

    • TransferAccelerationEnabledBucketCount

  • 액티비티 메트릭

    • 얼마나 요청이 들어왔는지에 대한 인사티으를 제공한다.

    • AllRequests, GetRequests, PutRequests, ListRequests, BytesDownloaded 등

  • Detailed Status Code Metrics

    • HTTP 상태 코드에 대한 인사이트를 제공한다.

    • 200OKStatus Count, 403ForbiddenErrorCount 등

  • 무료 메트릭은 모든 고객에게 자동으로 제공되며 약 28개의 사용량 지표가 포함되어 있고 쿼리에 대한 데이터는 14일 동안 조회할 수 있다.

  • 유로 메트릭은 고급 메트릭을 추가로 지원하고, CloudWatch에서 추가 비용 없이 접근할 수 있다. 접두사 단위로 메트릭을 수집할 수도 있고 데이터를 15개월 동안 사용할 수 있다.

Last updated