S3 Inventory를 사용한 데이터 카탈로그화 및 분석 - Amazon Simple Storage Service

S3 Inventory를 사용한 데이터 카탈로그화 및 분석

Amazon S3 인벤토리를 사용하여 스토리지를 관리할 수 있습니다. 예를 들어 이 인벤토리를 사용하면 비즈니스, 규정 준수 및 규제 요건에 대한 객체의 복제 및 암호화 상태를 감사하고 보고할 수 있습니다. 또한 Amazon S3 동기식 List API 작업에 대한 예약된 대안을 제공하는 Amazon S3 인벤토리를 사용하여 비즈니스 워크플로와 빅데이터 작업을 간소화하고 속도를 높일 수 있습니다. Amazon S3 인벤토리는 객체를 감사하기 위해 List API 작업을 사용하지 않으며 버킷의 요청 속도에 영향을 주지 않습니다.

Amazon S3 인벤토리는 S3 버킷 또는 공유 접두사가 있는 객체(즉, 공통 문자열로 시작하는 이름을 가진 객체)에 대해 매일 혹은 매주 객체 및 해당 메타데이터의 CSV(쉼표로 구분되는 값), Apache ORC(Optimized Row Columnar) 또는 Apache Parquet 파일 출력을 가능하게 합니다. 주간 인벤토리를 설정하면 초기 보고서가 생성된 후 매주 일요일(UTC 시간대)에 보고서가 생성됩니다. Amazon S3 인벤토리 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하세요.

하나의 버킷에 대해 복수의 인벤토리 목록을 구성할 수 있습니다. 인벤토리 목록을 구성할 때 다음 항목을 지정할 수 있습니다.

  • 인벤토리에 포함할 객체 메타데이터

  • 모든 객체 버전을 나열할지 아니면 현재 버전만 나열할지 여부

  • 인벤토리 목록 파일 출력을 저장할 위치

  • 인벤토리를 일일 또는 주간 단위로 생성할지 여부

  • 인벤토리 목록 파일을 암호화할지 여부

Amazon AthenaAmazon Redshift Spectrum 및 기타 도구(예: PrestoApache HiveApache Spark)를 사용하여 표준 SQL 쿼리로 Amazon S3 인벤토리를 쿼리할 수 있습니다. Athena를 사용하여 데이터를 쿼리하는 방법에 대한 자세한 내용은 Amazon Athena로 Amazon S3 인벤토리 쿼리 단원을 참조하세요.

참고

Amazon S3에서 첫 번째 인벤토리 보고서를 전달하는 데 최대 48시간이 걸릴 수 있습니다.

원본 및 대상 버킷

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

소스 버킷

인벤토리는 원본 버킷에 저장되어 있는 객체를 열거합니다. 전체 버킷에 대한 인벤토리 목록을 가져오거나 객체 키 이름 접두사를 기준으로 목록을 필터링할 수 있습니다.

소스 버킷:

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

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

대상 버킷

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

대상 버킷:

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

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

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

  • 소스 버킷과 동일한 AWS 리전에 있어야 합니다.

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

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

Amazon S3 인벤토리 목록

인벤토리 목록 파일에는 원본 버킷에 있는 객체의 목록과 각 객체의 메타데이터가 포함됩니다. 인벤토리 목록 파일은 다음 형식 중 하나로 대상 버킷에 저장됩니다.

  • GZIP으로 압축된 CSV 파일

  • ZLIB로 압축된 Apache 최적화 행 열 형식(ORC) 파일

  • Snappy로 압축된 Apache Parquet 파일

참고

Amazon S3 인벤토리 보고서의 객체는 어떤 순서로 정렬되는지 보장되지 않습니다.

인벤토리 목록 파일에는 소스 버킷에 있는 객체의 목록과 나열된 각 객체의 메타데이터가 포함됩니다.

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

  • 키 이름 – 버킷에 있는 객체를 고유하게 식별하는 객체 키 이름(또는 키). CSV 파일 형식을 사용하고 있는 경우 키 이름이 URL로 암호화되므로 사용하려면 디코딩해야 합니다.

  • 버전 ID – 객체 버전 ID. 버전 관리를 사용하는 버킷의 경우 Amazon S3는 버킷에 추가된 객체에 버전 번호를 지정합니다. 자세한 내용은 S3 버전 관리로 여러 버전의 객체 유지 섹션을 참조하세요. (목록이 최신 버전의 객체에 대해서만 구성된 경우 이 필드는 포함되지 않습니다.)

  • IsLatest – 객체가 최신 버전인 경우 True로 설정됩니다. (목록이 최신 버전의 객체에 대해서만 구성된 경우 이 필드는 포함되지 않습니다.)

  • 삭제 마커 – 객체가 삭제 마커인 경우 True로 설정됩니다. 자세한 내용은 S3 버전 관리로 여러 버전의 객체 유지 섹션을 참조하세요. (모든 버전의 객체를 포함하도록 보고서를 구성한 경우 이 필드는 보고서에 자동으로 추가됩니다.)

  • 크기 - 객체 크기(바이트)를 나타내며, 불완전한 멀티파트 업로드, 객체 메타데이터 및 삭제 마커의 크기는 포함되지 않습니다.

  • 마지막 수정 날짜(Last modified date) - 객체 생성일 또는 최종 수정일 중 최근 날짜

  • ETag - 엔터티 태그(ETag)는 객체의 해시입니다. ETag는 객체의 콘텐츠에 대한 변경 사항만 반영하고 메타데이터에 대한 변경을 반영하지 않습니다. ETag는 객체 데이터의 MD5 다이제스트일 수 있습니다. 다이제스트인지 여부는 객체 생성 방식 및 암호화 방식에 좌우됩니다. 자세한 내용은 Amazon Simple Storage Service API 참조에서 Object를 참조하십시오.

  • 스토리지 클래스 - 객체 저장에 사용되는 스토리지 클래스입니다. STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW로 설정됩니다. 자세한 내용은 Amazon S3 스토리지 클래스 이해 및 관리 단원을 참조하십시오.

    참고

    S3 인벤토리는 S3 Express One Zone을 지원하지 않습니다.

  • Multipart upload flag – 객체가 멀티파트 업로드로 업로드된 경우 True로 설정됩니다. 자세한 내용은 멀티파트 업로드를 사용한 객체 업로드 및 복사 단원을 참조하십시오.

  • 복제 상태PENDING, COMPLETED, FAILED 또는 REPLICA로 설정됩니다. 자세한 내용은 복제 상태 정보 가져오기 단원을 참조하십시오.

  • 암호화 상태 - Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3), AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS), AWS KMS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS), 고객 제공형 키를 사용한 서버 측 암호화(SSE-C) 등 사용되는 암호화 키의 종류에 따른 서버 측 암호화 상태입니다. SSE-S3, SSE-KMS, DSSE-KMS, SSE-C, NOT-SSE로 설정됩니다. NOT-SSE 상태는 객체가 서버 측 암호화를 사용하여 암호화되지 않은 것을 의미합니다. 자세한 내용은 암호화로 데이터 보호 섹션을 참조하세요.

  • S3 객체 잠금 보관 종료일 – 잠긴 객체를 삭제할 수 없는 기한입니다. 자세한 내용은 Object Lock으로 객체 잠금 단원을 참조하십시오.

  • S3 객체 잠금 보존 모드 – 잠긴 객체에 대해 Governance 또는 Compliance로 설정됩니다. 자세한 내용은 Object Lock으로 객체 잠금 단원을 참조하십시오.

  • S3 객체 잠금 법적 보존 상태 – 법적 보존이 객체에 적용된 경우 , 그렇지 않으면 On으로 설정됩니다. 그렇지 않으면 Off로 설정됩니다. 자세한 내용은 Object Lock으로 객체 잠금 단원을 참조하십시오.

  • S3 Intelligent-Tiering 액세스 티어 – 객체가 S3 Intelligent-Tiering 스토리지 클래스에 저장된 경우 객체의 액세스 계층(Frequent Access 또는 Infrequent Access)입니다. FREQUENT, INFREQUENT, ARCHIVE_INSTANT_ACCESS, ARCHIVE, DEEP_ARCHIVE로 설정됩니다. 자세한 내용은 변경되는 또는 알 수 없는 액세스 패턴으로 데이터를 자동으로 최적화하는 스토리지 클래스 단원을 참조하십시오.

  • S3 버킷 키 상태ENABLED 또는 DISABLED로 설정됩니다. 객체가 SSE-KMS에 S3 버킷 키를 사용하는지 여부를 나타냅니다. 자세한 내용은 Amazon S3 버킷 키 사용 단원을 참조하십시오.

  • 체크섬 알고리즘 – 객체의 체크섬을 생성하는 데 사용된 알고리즘을 나타냅니다. 자세한 내용은 지원되는 체크섬 알고리즘 사용 단원을 참조하십시오.

  • 객체 액세스 제어 목록 -  이 객체에 대한 액세스 권한이 부여된 AWS 계정 또는 그룹과 부여된 액세스 유형을 정의하는 각 객체에 대한 액세스 제어 목록(ACL)입니다. 객체 ACL 필드는 JSON 형식으로 정의됩니다. S3 인벤토리 보고서에는 소스 버킷의 객체와 연결된 ACL이 포함되며, 이는 버킷에 대해 ACL이 비활성화된 경우에도 마찬가지입니다. 자세한 내용은 객체 ACL 필드 작업ACL(액세스 제어 목록) 개요 단원을 참조하세요.

    참고

    객체 ACL 필드는 JSON 형식으로 정의됩니다. 인벤토리 보고서에는 객체 ACL 필드의 값이 base64로 인코딩된 문자열로 표시됩니다.

    예를 들어 다음과 같은 JSON 형식의 객체 ACL 필드가 있다고 가정해 보겠습니다.

    { "version": "2022-11-10", "status": "AVAILABLE", "grants": [{ "canonicalId": "example-canonical-user-ID", "type": "CanonicalUser", "permission": "READ" }] }

    객체 ACL 필드는 다음과 같이 base64로 인코딩된 문자열로 인코딩되어 표시됩니다.

    eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3siY2Fub25pY2FsSWQiOiJleGFtcGxlLWNhbm9uaWNhbC11c2VyLUlEIiwidHlwZSI6IkNhbm9uaWNhbFVzZXIiLCJwZXJtaXNzaW9uIjoiUkVBRCJ9XX0=

    객체 ACL 필드의 디코딩된 값을 JSON으로 가져오려면 Amazon Athena에서 이 필드를 쿼리하면 됩니다. 쿼리 예제를 보려면 Amazon Athena로 Amazon S3 인벤토리 쿼리 단원을 참조하세요.

  • 객체 소유자 - 객체 소유자의 표준 사용자 ID입니다. 자세한 내용은 AWS 계정 관리 참조 안내서의 내 AWS 계정의 표준 사용자 ID 찾기를 참조하세요.

참고

수명 주기 구성에 따라 객체가 수명 주기의 끝에 도달한 경우, Amazon S3에서는 제거를 위해 객체를 대기열에 넣고 비동기 방식으로 제거합니다. 따라서 만료 날짜와 Amazon S3에서 객체를 제거하는 날짜 사이에 지연이 있을 수 있습니다. 인벤토리 보고서에는 만료되었지만 아직 제거되지 않은 객체가 포함됩니다. S3 수명 주기에서 만료 작업에 대한 자세한 내용은 객체 만료 섹션을 참조하십시오.

다음은 4개의 레코드로 구성된 추가 메타데이터 필드가 포함된 예제 인벤토리 보고서입니다.

amzn-s3-demo-bucket1 example-object-1 EXAMPLEDC8l.XJCENlF7LePaNIIvs001 TRUE 1500 2024-08-15T15:28:26.0004 EXAMPLE21e1518b92f3d92773570f600 STANDARD FALSE COMPLETED SSE-KMS 2025-01-25T15:28:26.000Z COMPLIANCE Off ENABLED eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7000 amzn-s3-demo-bucket1 example-object-2 EXAMPLEDC8l.XJCENlF7LePaNIIvs002 TRUE 200 2024-08-21T15:28:26.000Z EXAMPLE21e1518b92f3d92773570f601 INTELLIGENT_TIERING FALSE COMPLETED SSE-KMS 2025-01-25T15:28:26.000Z COMPLIANCE Off INFREQUENT ENABLED SHA-256 eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7001 amzn-s3-demo-bucket1 example-object-3 EXAMPLEDC8l.XJCENlF7LePaNIIvs003 TRUE 12500 2023-01-15T15:28:30.000Z EXAMPLE21e1518b92f3d92773570f602 STANDARD FALSE REPLICA SSE-KMS 2025-01-25T15:28:26.000Z GOVERNANCE On ENABLED eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7002 amzn-s3-demo-bucket1 example-object-4 EXAMPLEDC8l.XJCENlF7LePaNIIvs004 TRUE 100 2021-02-15T15:28:27.000Z EXAMPLE21e1518b92f3d92773570f603 STANDARD FALSE COMPLETED SSE-KMS 2025-01-25T15:28:26.000Z COMPLIANCE Off ENABLED eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7003

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

s3:PutInventoryConfiguration 권한을 통해 사용자는 인벤토리 목록을 구성할 때 각 객체에 대해 앞서 나열된 모든 메타데이터 필드를 선택하고 인벤토리를 저장할 대상 버킷을 지정할 수 있습니다. 대상 버킷의 객체에 대한 읽기 권한이 있는 사용자는 인벤토리 목록에서 사용할 수 있는 모든 객체 메타데이터 필드에 액세스할 수 있습니다. 인벤토리 보고서에 대한 액세스를 제한하려면 S3 인벤토리 및 S3 분석 권한 부여 섹션을 참조하세요.

인벤토리 일관성

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

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

Amazon S3 인벤토리 작업에 대한 자세한 내용은 다음 주제를 참조하세요.