S3 인벤토리로 데이터 카탈로그화 및 분석
S3 인벤토리로 데이터 카탈로그화 및 분석
Amazon S3 인벤토리를 사용해 스토리지를 관리할 수 있어요. 예를 들어 비즈니스, 규정 준수, 규제 요구 사항을 위해 객체의 복제 및 암호화 상태를 감사하고 보고하는 데 사용할 수 있어요. Amazon S3 인벤토리는 Amazon S3 동기식 List API 작업의 예약된 대안을 제공하므로, 비즈니스 워크플로우와 빅데이터 작업을 단순화하고 가속화할 수도 있어요. Amazon S3 인벤토리는 List API 작업을 사용해 객체를 감사하지 않으며 버킷의 요청 빈도에도 영향을 주지 않아요.
출처: 문서
본문
Amazon S3 인벤토리는 쉼표로 구분된 값(CSV), Apache 최적화 행 열(ORC) 또는 Apache Parquet 출력 파일을 제공하며, S3 버킷 또는 공통 접두사(즉, 공통 문자열로 시작하는 이름을 가진 객체)를 공유하는 객체에 대해 매일 또는 매주 객체와 해당 메타데이터를 나열해요. 주간 인벤토리를 설정하면 최초 보고서 이후 매주 일요일(UTC 시간대)에 보고서가 생성돼요. Amazon S3 인벤토리 요금에 대한 자세한 내용은 Amazon S3 요금을 참고하세요.
버킷에 대해 여러 인벤토리 목록을 구성할 수 있어요. 인벤토리 목록을 구성할 때 다음을 지정할 수 있어요.
- 인벤토리에 포함할 객체 메타데이터
- 모든 객체 버전을 나열할지 현재 버전만 나열할지
- 인벤토리 목록 파일 출력을 저장할 위치
- 인벤토리를 매일 또는 매주 생성할지
- 인벤토리 목록 파일을 암호화할지
Amazon S3 인벤토리는 Amazon Athena, Amazon Redshift Spectrum, Presto, Apache Hive, Apache Spark 같은 도구로 표준 SQL 쿼리를 사용해 조회할 수 있어요. Athena로 인벤토리 파일을 조회하는 방법에 대한 자세한 내용은 Amazon Athena로 Amazon S3 인벤토리 조회를 참고하세요.
참고 Amazon S3가 첫 번째 인벤토리 보고서를 전달하는 데 최대 48시간이 걸릴 수 있어요.
참고 인벤토리 구성을 삭제한 뒤에도 시스템이 삭제를 처리하는 짧은 전환 기간 동안 Amazon S3가 추가 인벤토리 보고서 하나를 전달할 수 있어요.
소스 버킷과 대상 버킷 (Source and destination buckets)
인벤토리가 객체를 나열하는 버킷을 소스 버킷이라고 해요. 인벤토리 목록 파일이 저장되는 버킷을 대상 버킷이라고 해요.
소스 버킷 — 인벤토리는 소스 버킷에 저장된 객체를 나열해요. 전체 버킷에 대한 인벤토리 목록을 얻거나 객체 키 이름 접두사로 목록을 필터링할 수 있어요. 소스 버킷은 인벤토리에 나열된 객체와 인벤토리 구성을 포함해요.
대상 버킷 — Amazon S3 인벤토리 목록 파일은 대상 버킷에 기록돼요. 모든 인벤토리 목록 파일을 대상 버킷의 공통 위치에 묶으려면 인벤토리 구성에서 대상 접두사를 지정할 수 있어요. 대상 버킷은 인벤토리 파일 목록을 포함하고, 대상 버킷에 저장된 모든 인벤토리 목록 파일을 나열하는 매니페스트 파일을 포함해요. 자세한 내용은 인벤토리 매니페스트를 참고하세요. 버킷 소유권을 확인하고 버킷에 파일을 쓸 수 있는 권한을 Amazon S3에 부여하려면 버킷 정책이 있어야 해요. 소스 버킷과 같은 AWS 리전에 있어야 해요. 소스 버킷과 같을 수 있어요. 소스 버킷을 소유한 계정과 다른 AWS 계정이 소유할 수 있어요.
Amazon S3 인벤토리 목록 (Amazon S3 Inventory list)
인벤토리 목록 파일은 소스 버킷의 객체 목록과 각 객체의 메타데이터를 포함해요. 인벤토리 목록 파일은 다음 형식 중 하나로 대상 버킷에 저장돼요.
- GZIP으로 압축된 CSV 파일
- ZLIB으로 압축된 Apache 최적화 행 열(ORC) 파일
- Snappy로 압축된 Apache Parquet 파일
참고 Amazon S3 인벤토리 보고서의 객체는 어떤 순서로도 정렬된다는 보장이 없어요.
인벤토리 목록 파일은 소스 버킷의 객체 목록과 각 나열된 객체의 메타데이터를 포함해요. 다음 필드는 항상 포함돼요.
- 버킷 이름 (Bucket name) — 인벤토리가 대상으로 하는 버킷의 이름이에요.
- 키 이름 (Key name) — 버킷에서 객체를 고유하게 식별하는 객체 키 이름(또는 키)이에요. CSV 파일 형식을 사용할 때 키 이름은 URL 인코딩되므로 사용하기 전에 디코딩해야 해요.
보고서에 다음 추가 메타데이터 필드를 포함하도록 선택할 수 있어요.
- ETag — ETag(엔터티 태그)는 객체의 해시예요. ETag는 객체의 내용 변경만 반영하며 메타데이터 변경은 반영하지 않아요. ETag는 객체 데이터의 MD5 다이제스트일 수 있어요. 그 여부는 객체가 어떻게 생성되고 어떻게 암호화되는지에 따라 달라져요. 자세한 내용은 Amazon Simple Storage Service API Reference의 Object를 참고하세요.
- 마지막 수정 날짜 (Last modified date) — 객체 생성 날짜 또는 마지막 수정 날짜 중 더 최신인 날짜예요.
- 크기 (Size) — 불완전한 멀티파트 업로드, 객체 메타데이터, 삭제 마커의 크기를 제외한 객체 크기(바이트)예요.
- 스토리지 클래스 (Storage class) — 객체 저장에 사용되는 스토리지 클래스예요.
STANDARD,REDUCED_REDUNDANCY,STANDARD_IA,ONEZONE_IA,INTELLIGENT_TIERING,GLACIER,DEEP_ARCHIVE,OUTPOSTS,GLACIER_IR,SNOW,EXPRESS_ONEZONE로 설정돼요. 자세한 내용은 Amazon S3 스토리지 클래스 이해 및 관리를 참고하세요. - 체크섬 알고리즘 (Checksum algorithm) — 객체의 체크섬을 만드는 데 사용된 알고리즘을 나타내요. 자세한 내용은 지원되는 체크섬 알고리즘 사용을 참고하세요.
- 암호화 상태 (Encryption status) — 사용되는 암호화 키 종류에 따른 서버 측 암호화 상태예요. Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3), AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS), AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS), 고객 제공 키를 사용한 서버 측 암호화(SSE-C) 중 하나예요.
SSE-S3,SSE-KMS,DSSE-KMS,SSE-C,NOT-SSE로 설정돼요.NOT-SSE상태는 객체가 서버 측 암호화로 암호화되지 않았음을 의미해요. 자세한 내용은 암호화로 데이터 보호를 참고하세요. - S3 Intelligent-Tiering 액세스 계층 (S3 Intelligent-Tiering access tier) — 객체가 S3 Intelligent-Tiering 스토리지 클래스에 저장된 경우의 액세스 계층(빈번 또는 비빈번)이에요.
FREQUENT,INFREQUENT,ARCHIVE_INSTANT_ACCESS,ARCHIVE,DEEP_ARCHIVE로 설정돼요. 자세한 내용은 변화하거나 알 수 없는 접근 패턴이 있는 데이터를 자동으로 최적화하는 스토리지 클래스를 참고하세요. - S3 Object Lock 보존 종료 날짜 (S3 Object Lock retain until date) — 잠긴 객체를 삭제할 수 없는 날짜예요. 활성 이벤트 보존이 있는 객체의 경우 이 날짜는 보고서 생성 시간에 기반해 동적이에요. 해제된 이벤트 보존 또는 고정 보존이 있는 객체의 경우 이 날짜는 고정돼요. 자세한 내용은 Object Lock으로 객체 잠그기를 참고하세요.
- S3 Object Lock 보존 모드 (S3 Object Lock retention mode) — 잠긴 객체에 대해
GOVERNANCE또는COMPLIANCE로 설정돼요. 자세한 내용은 Object Lock으로 객체 잠그기를 참고하세요. - S3 Object Lock 법적 보존 상태 (S3 Object Lock legal hold status) — 객체에 법적 보존이 적용된 경우
ON으로 설정돼요. 그렇지 않으면OFF로 설정돼요. 자세한 내용은 Object Lock으로 객체 잠그기를 참고하세요. - S3 Object Lock 이벤트 보존 상태 (S3 Object Lock event hold status) — 객체의 이벤트 보존 상태를 반영해
ON또는OFF로 설정돼요. 객체에 이벤트 보존이 구성되어 있지 않으면 이 필드는 비어 있어요. - S3 Object Lock 이벤트 보존 기간 (S3 Object Lock event hold duration) — 객체에 구성된 변동 보존 기간이에요. 객체에 이벤트 보존이 구성되어 있지 않으면 이 필드는 비어 있어요. 참고: S3 Object Lock 이벤트 보존 기간 필드를 포함하면 보고서에는 보존 기간 값의 단위를 나타내는 S3 Object Lock 이벤트 보존 기간 단위 열(
DAYS또는YEARS)도 포함돼요. - 버전 ID (Version ID) — 객체 버전 ID예요. 버킷에서 버전 관리를 활성화하면 Amazon S3는 버킷에 추가되는 객체에 버전 번호를 할당해요. 자세한 내용은 S3 버전 관리로 객체의 여러 버전 유지를 참고하세요. (목록이 객체의 현재 버전만으로 구성된 경우 이 필드는 포함되지 않아요.)
- IsLatest — 객체가 현재 버전이면
True로 설정돼요. (목록이 객체의 현재 버전만으로 구성된 경우 이 필드는 포함되지 않아요.) - 삭제 마커 (Delete marker) — 객체가 삭제 마커면
True로 설정돼요. 자세한 내용은 S3 버전 관리로 객체의 여러 버전 유지를 참고하세요. (보고서를 모든 객체 버전을 포함하도록 구성했다면 이 필드가 자동으로 추가돼요.) - 멀티파트 업로드 플래그 (Multipart upload flag) — 객체가 멀티파트 업로드로 업로드된 경우
True로 설정돼요. 자세한 내용은 Amazon S3에서 멀티파트 업로드로 객체 업로드 및 복사를 참고하세요. - 객체 소유자 (Object owner) — 객체 소유자의 정식 사용자 ID예요. 자세한 내용은 AWS Account Management Reference Guide의 AWS 계정의 정식 사용자 ID 찾기를 참고하세요.
- 복제 상태 (Replication status) —
PENDING,COMPLETED,FAILED,REPLICA로 설정돼요. 자세한 내용은 복제 상태 정보 가져오기를 참고하세요. - S3 Bucket Key 상태 (S3 Bucket Key status) —
ENABLED또는DISABLED로 설정돼요. 객체가 SSE-KMS에 S3 Bucket Key를 사용하는지 여부를 나타내요. 자세한 내용은 Amazon S3 Bucket Keys 사용을 참고하세요. - 객체 접근 제어 목록 (Object access control list) — 어떤 AWS 계정이나 그룹에 이 객체에 대한 접근이 부여되는지와 부여된 접근 유형을 정의하는 각 객체의 ACL이에요. Object ACL 필드는 JSON 형식으로 정의돼요. S3 인벤토리 보고서는 버킷에서 ACL이 비활성화된 경우에도 소스 버킷의 객체와 연결된 ACL을 포함해요. 자세한 내용은 Object ACL 필드 사용과 접근 제어 목록(ACL) 개요를 참고하세요.
- 참고: Object ACL 필드는 JSON 형식으로 정의돼요. 인벤토리 보고서는 Object ACL 필드 값을 base64로 인코딩된 문자열로 표시해요. 예를 들어 다음 JSON 형식의 Object ACL 필드가 있다고 가정해 볼게요.
{ "version": "2022-11-10", "status": "AVAILABLE", "grants": [{ "canonicalId": "example-canonical-user-ID", "type": "CanonicalUser", "permission": "READ" }] }- Object ACL 필드는 인코딩되어 다음 base64 문자열로 표시돼요:
eyJ2ZX...9XX0= - Object ACL 필드의 JSON 디코딩 값을 얻으려면 Amazon Athena에서 이 필드를 조회할 수 있어요. 쿼리 예시는 Amazon Athena로 Amazon S3 인벤토리 조회를 참고하세요.
- 수명주기 만료 날짜 (Lifecycle Expiration Date) — 객체의 수명주기 만료 타임스탬프로 설정돼요. 이 필드는 객체가 적용 가능한 수명주기 규칙에 의해 만료될 경우에만 채워져요. 다른 경우 필드는 비어 있어요.
FAILED복제 상태의 객체는 복제가 성공할 때까지 S3 Lifecycle이 만료 및 전환 작업을 방지하므로 만료 날짜가 채워지지 않아요. 자세한 내용은 객체 만료를 참고하세요.
참고 객체가 수명주기 구성에 따라 수명이 끝나면 Amazon S3는 객체를 제거할 대기열에 넣고 비동기적으로 제거해요. 따라서 만료 날짜와 Amazon S3가 객체를 제거하는 날짜 사이에 지연이 있을 수 있어요. 인벤토리 보고서에는 만료되었지만 아직 제거되지 않은 객체가 포함돼요. S3 Lifecycle의 만료 작업에 대한 자세한 내용은 객체 만료를 참고하세요.
다음은 네 개 레코드로 구성된 추가 메타데이터 필드가 있는 인벤토리 보고서 예시예요.
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 eyJ2ZX...1dfQ== 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 eyJ2ZX...1dfQ== 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 eyJ2ZX...1dfQ== 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 eyJ2ZX...1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7003
오래된 인벤토리 목록을 삭제하는 수명주기 정책을 만들 것을 권장해요. 자세한 내용은 객체의 수명주기 관리를 참고하세요.
s3:PutInventoryConfiguration 권한은 사용자가 인벤토리 목록을 구성할 때 위에 나열된 각 객체의 모든 메타데이터 필드를 선택하고, 인벤토리를 저장할 대상 버킷을 지정할 수 있게 해줘요. 대상 버킷의 객체에 대한 읽기 접근 권한이 있는 사용자는 인벤토리 목록에서 사용할 수 있는 모든 객체 메타데이터 필드에 접근할 수 있어요. 인벤토리 보고서에 대한 접근을 제한하려면 S3 인벤토리 및 S3 분석에 대한 권한 부여를 참고하세요.
인벤토리 일관성 (Inventory consistency)
모든 객체가 각 인벤토리 목록에 나타나지 않을 수 있어요. 인벤토리 목록은 PUT 요청(새 객체와 덮어쓰기 모두)과 DELETE 요청에 대해 최종 일관성을 제공해요. 버킷의 각 인벤토리 목록은 버킷 항목의 스냅샷이에요. 이 목록은 최종 일관성을 가져요(즉, 최근에 추가되거나 삭제된 객체가 목록에 포함되지 않을 수 있어요).
객체에 대한 작업을 수행하기 전에 객체의 상태를 검증하려면 객체의 메타데이터를 가져오는 HeadObject REST API 요청을 수행하거나 Amazon S3 콘솔에서 객체의 속성을 확인할 것을 권장해요. AWS CLI나 AWS SDK로도 객체 메타데이터를 확인할 수 있어요. 자세한 내용은 Amazon Simple Storage Service API Reference의 HeadObject를 참고하세요.
Amazon S3 인벤토리 작업에 대한 자세한 내용은 다음 주제를 참고하세요.
- Amazon S3 인벤토리 구성
- 인벤토리 목록 위치 찾기
- 인벤토리 완료를 위한 Amazon S3 이벤트 알림 설정
- Amazon Athena로 Amazon S3 인벤토리 조회
- Amazon S3 인벤토리 보고서의 빈 버전 ID 문자열을 null 문자열로 변환
- Object ACL 필드 사용