메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

Amazon S3 인벤토리

Amazon S3 인벤토리는 스토리지 관리에 도움이 되는 Amazon S3의 도구 중 하나입니다. Amazon S3 동기식 목록 API 작업의 대안으로 Amazon S3 인벤토리를 사용하면 비즈니스 워크플로우 및 빅 데이터 업무를 단순화하고 속도를 높일 수 있습니다. Amazon S3 인벤토리는 S3 버킷 또는 공유 접두사에 대해 매일 혹은 매주 객체 및 해당 메타데이터의 CSV(쉼표로 구분되는 값) 플랫 파일 출력을 가능하게 합니다(즉, 공통 문자열로 시작하는 이름을 가진 객체).

인벤토리에 포함시킬 객체 메타데이터, 모든 객체 버전을 목록에 포함시킬 것인지 혹은 최신 버전만을 목록에 포함시킬 것인지, 인벤토리를 매일 생성할 것인지 혹은 매주 생성할 것인지를 설정할 수 있습니다. 하나의 버킷에 대해 복수의 인벤토리 목록을 구성할 수 있습니다. 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하십시오.

Amazon S3 인벤토리 설정은 어떻게 합니까?

이 단원에서는 인벤토리 원본 및 대상 버킷과 인벤토리 설정 단계의 순서대로 Amazon S3 인벤토리 설정 방법에 대해 설명합니다.

Amazon S3 인벤토리 원본 및 대상 버킷

인벤토리가 객체를 열거하는 버킷을 원본 버킷이라고 합니다. 인벤토리 목록 플랫파일이 저장되는 버킷을 대상 버킷이라고 합니다.

원본 버킷

Amazon S3 인벤토리는 원본 버킷에 저장되어 있는 객체를 열거합니다. 전체 버킷에 대한 인벤토리 목록 또는 (객체 키 이름) 접두사로 필터링한 인벤토리 목록을 생성할 수 있습니다.

원본 버킷:

  • 인벤토리에 열거되어 있는 객체를 포함합니다.

  • 인벤토리 구성을 포함합니다.

대상 버킷

Amazon S3 인벤토리 목록 플랫 파일이 대상 버킷에 작성됩니다. 인벤토리 구성에서 대상 (객체 키 이름) 접두사를 지정하여 대상 버킷 내 일반적인 위치에 있는 모든 인벤토리 목록 파일을 그룹화할 수 있습니다.

대상 버킷:

  • 인벤토리 플랫 파일 목록을 포함합니다.

  • 대상 버킷에 저장되어 있는 모든 플랫 파일 인벤토리 목록이 열거된 manifest.json 파일을 포함합니다. 자세한 내용은 인벤토리 매니페스트는 무엇입니까? 단원을 참조하십시오.

  • Amazon S3가 버킷의 소유권을 검증하고 파일을 버킷에 쓸 수 있도록 허용하는 버킷 정책이 반드시 있어야 합니다.

  • 원본 버킷과 동일한 리전에 있어야 합니다.

  • 원본 버킷과 같을 수 있습니다.

  • 원본 버킷을 소유한 계정과 다른 AWS 계정에서 소유할 수 있습니다.

Amazon S3 인벤토리 설정

Amazon S3 인벤토리를 사용하면 정해진 일정에 객체 목록이 S3 버킷에 생성되므로 스토리지를 용이하게 관리할 수 있습니다. 인벤토리 목록은 대상 버킷에 있는 플랫 파일에 게시됩니다.

S3 버킷의 Amazon S3 인벤토리 설정:

  1. 대상 버킷의 버킷 정책을 추가합니다.

    객체를 정해진 위치에 있는 버킷에 쓸 수 있는 권한을 Amazon S3에 부여하는 버킷 정책을 대상 버킷 상에 생성해야 합니다. 정책에 대한 예는 Amazon S3 인벤토리 및 Amazon S3 분석에 권한 부여을 참조하십시오.

  2. 원본 버킷에 있는 객체를 열거하여 대상 버킷에 목록을 게시하도록 인벤토리를 구성합니다.

    원본 버킷에 대한 인벤토리 목록을 구성할 때 목록을 저장하고자 하는 대상 버킷을 지정하고 목록을 매일 혹은 매주 생성할지 정합니다. 또한 포함시킬 객체 메타데이터와 모든 객체 버전을 목록에 포함시킬지 아니면 최신 버전만을 목록에 포함시킬지 구성할 수 있습니다. 하나의 버킷에 대해 복수의 인벤토리 목록을 구성할 수 있습니다.

Amazon S3 인벤토리에 포함된 항목은 무엇입니까?

인벤토리 목록 플랫 파일에는 원본 버킷에 있는 객체의 목록과 각 객체의 메타데이터가 포함됩니다. 인벤토리 목록은 대상 버킷에 GZIP으로 압축된 CSV(쉼표로 구분된 값) 파일로 저장됩니다.

인벤토리 목록에는 S3 버킷에 있는 객체 목록과 목록 상의 각 객체에 대한 다음의 메타데이터가 포함됩니다.

  • Bucket name – 인벤토리 대상 버킷의 이름.

  • Key name – 버킷에 있는 객체를 고유하게 식별하는 객체 키 이름(또는 키).

  • Version ID – 객체 버전 ID. 버전 관리를 사용하는 버킷의 경우 Amazon S3는 버킷에 추가된 객체에 버전 번호를 지정합니다. 자세한 내용은 객체 버전 관리 단원을 참조하십시오. (목록에 최신 버전의 객체만 있을 경우 이 필드는 포함되지 않습니다.)

  • IsLatest – 객체가 최신 버전인 경우 True로 설정합니다. (목록에 최신 버전의 객체만 있을 경우 이 필드는 포함되지 않습니다.)

  • Size – 객체 크기(바이트).

  • Last modified date – 객체 생성일 또는 최종 수정일 중 최근 날짜.

  • ETag – 개체 태그는 객체의 해시입니다. ETag는 객체의 콘텐츠에 대한 변경 사항만 반영하고 메타데이터에 대한 변경을 반영하지 않습니다. ETag는 객체 데이터의 MD5 다이제스트일 수도 아닐 수도 있습니다. 다이제스트인지 여부는 객체 생성 방식 및 암호화 방식에 좌우됩니다.

  • Storage class – 객체 저장에 사용되는 스토리지 클래스. 자세한 내용은 스토리지 클래스 섹션을 참조하십시오.

  • Multipart upload flag – 객체가 멀티파트 업로드로 업로드된 경우 True로 설정합니다. 자세한 내용은 멀티파트 업로드 개요 섹션을 참조하십시오.

  • Delete marker – 객체가 삭제 마커인 경우 True로 설정합니다. 자세한 내용은 객체 버전 관리 단원을 참조하십시오. (목록에 최신 버전의 객체만 있을 경우 이 필드는 포함되지 않습니다.)

  • Replication statusPENDING, COMPLETED, FAILED 또는 REPLICA.로 설정합니다. 자세한 내용은 객체의 복제 상태를 확인하는 방법 단원을 참조하십시오.

다음은 스프레드시트 애플리케이션에 열려 있는 인벤토리 목록의 예입니다. 머리글 열은 예를 설명하기 위한 것으로, 실제 목록에는 포함되지 않습니다.

오래된 인벤토리 목록을 삭제하는 수명 주기 정책을 생성할 것을 권장합니다. 자세한 내용은 객체 수명 주기 관리 단원을 참조하십시오.

인벤토리 일관성

모든 객체가 각 인벤토리 목록에 나타나지 않을 수도 있습니다. 인벤토리 목록은 새 객체 및 덮어쓰기의 PUT에 대한 최종 일관성과 DELETE에 대한 최종 일관성을 제공합니다. 인벤토리 목록은 최종 일관성을 지닌 버킷 항목의 롤링 스냅샷입니다(즉, 최근에 추가되거나 삭제된 객체가 목록에 포함되지 않을 수 있습니다).

객체에 대한 작업을 수행하기 전에 객체 상태의 유효성을 검증하기 위해 객체의 메타데이터를 가져오도록 HEAD Object REST API 요청을 수행하거나 Amazon S3 콘솔에서 객체의 속성을 확인합니다. AWS CLI, 또는 AWS SDKS를 사용하여 객체 메타데이터를 확인할 수도 있습니다. 자세한 내용은 Amazon Simple Storage Service API ReferenceHEAD Object를 참조하십시오.

인벤토리 목록의 위치는 어디입니까?

매니페스트 파일은 인벤토리가 게시될 때 대상 버킷의 다음의 위치에 게시됩니다.

Copy
destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.checksum
  • destination-prefix는 인벤토리 구성에서 설정하여 대상 버킷 내의 일반적인 위치에 있는 모든 인벤토리 목록 파일을 그룹화하는 데 사용할 수 있는 (객체 키 이름) 접두사입니다.

  • source-bucket은 인벤토리 목록에 객체가 열거되는 버킷입니다. 여러 원본 버킷에서 복수의 인벤토리 보고서가 동일한 대상 버킷으로 전송되는 경우 충돌을 방지하기 위해 추가됩니다.

  • config-ID는 동일한 원본 버킷에서 동일한 대상 버킷으로 복수의 인벤토리 보고서가 전송되는 경우 이들의 충돌을 방지하기 위해 추가됩니다.

  • YYYY-MM-DDTHH-MMZ는 인벤토리 목록이 생성된 날짜입니다. 예: 2016-11-06T21-32Z.

  • manifest.json은 매니페스트 파일입니다.

  • 매니패스트 체크섬은 manifest.json 파일 콘텐츠의 MD5입니다.

인벤토리 목록은 매일 또는 매주 대상 버킷의 다음 위치에 게시됩니다.

Copy
destination-prefix/source-bucket/data/example-file-name.csv.gz ... destination-prefix/source-bucket/data/example-file-name-1.csv.gz
  • destination-prefix는 인벤토리 구성에서 설정하여 대상 버킷 내의 일반적인 위치에 있는 모든 인벤토리 목록 파일을 그룹화하는 데 사용할 수 있는 (객체 키 이름) 접두사입니다.

  • source-bucket은 인벤토리 목록에 객체가 열거되는 버킷입니다. 여러 원본 버킷에서 복수의 인벤토리 보고서가 동일한 대상 버킷으로 전송되는 경우 충돌을 방지하기 위해 추가됩니다.

  • example-file-name.csv.gz는 인벤토리 목록 파일의 하나입니다.

인벤토리 매니페스트는 무엇입니까?

매니페스트는 원본 버킷 이름, 대상 버킷 이름, 인벤토리 목록 버전, 인벤토리 목록 플랫파일의 형식 및 스키마, 인벤토리 목록 파일의 실제 목록 등 인벤토리 목록에 관한 메타데이터 및 기타 기본 정보를 제공합니다.

각 인벤토리마다 매니페스트가 하나 있는데, 대상 버킷에 있는 인벤토리 목록이 열거된 manifest.json파일에 포함되어 있습니다. manifest.json 파일이 쓰여질 때마다 manifest.json 파일 콘텐츠의 MD5인 manifest.checksum 파일이 수반됩니다. 매니페스트는 대상 버킷에 새 목록이 작성될 때마다 업데이트됩니다.

다음은 manifest.json 파일의 예제입니다.

Copy
{ "sourceBucket": "example-source-bucket", "destinationBucket": "example-inventory-destination-bucket", "version": "2016-11-30", "fileFormat": "CSV", "fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, Size, LastModifiedDate, ETag, StorageClass, MultipartUploaded, ReplicationStatus", "files": [ { "key": "Inventory/example-source-bucket/2016-11-06T21-32Z/files/939c6d46-85a9-4ba8-87bd-9db705a579ce.csv.gz", "size": 2147483647, "MD5checksum": "f11166069f1990abeb9c97ace9cdfabc", "inventoriedRecord": 58050695 } ] }

인벤토리가 완료되는 시점을 어떻게 알 수 있습니까?

매니페스트 체크섬 파일이 생성될 때 인벤토리 목록이 대상 버킷에 추가되었음을 알려 주는 통보를 수신하도록 Amazon S3 이벤트 알림을 설정할 수 있습니다. 매니페스트는 대상 위치에 있는 모든 인벤토리 목록의 최신 목록입니다.

Amazon S3는 이벤트를 Amazon Simple Notification Service(Amazon SNS) 주제, Amazon Simple Queue Service(Amazon SQS) 대기열 또는 AWS Lambda 기능에 게시할 수 있습니다. 자세한 내용은 Amazon S3 이벤트 알림 구성 단원을 참조하십시오.

다음의 알림 구성은 대상 버킷에 새롭게 추가된 모든 매니페스트 체크섬 파일이 AWS Lambda cloud-function-list-write에 의해 처리되도록 구성합니다.

Copy
<NotificationConfiguration> <QueueConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>destination-prefix/source-bucket</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>checksum</Value> </FilterRule> </S3Key> </Filter> <Cloudcode>arn:aws:lambda:us-west-2:222233334444:cloud-function-list-write</Cloudcode> <Event>s3:ObjectCreated:*</Event> </QueueConfiguration> </NotificationConfiguration>

자세한 내용은 AWS Lambda Developer Guide에서 Amazon S3와 AWS Lambda 사용하기 단원을 참조하십시오.

다음은 Amazon S3 인벤토리에 사용되는 REST 작업입니다.