S3 Metadata 라이브 인벤토리 테이블 스키마
S3 Metadata 라이브 인벤토리 테이블 스키마 (S3 Metadata live inventory tables schema)
라이브 인벤토리 테이블은 버킷의 모든 객체와 해당 버전에 대한 간단하고 조회 가능한 인벤토리를 제공해서 데이터의 최신 상태를 파악할 수 있게 해줘요. 객체에 대한 업데이트는 일반적으로 1시간 이내에 인벤토리 테이블에 반영돼요.
출처: 문서
본문
이 테이블을 사용해 다양한 워크로드에 처리하려는 객체를 식별함으로써 비즈니스 워크플로와 빅데이터 작업을 단순화하고 가속화할 수 있어요. 예를 들어 인벤토리 테이블을 조회해 다음을 수행할 수 있어요.
- S3 Glacier Deep Archive 스토리지 클래스에 저장된 모든 객체 찾기
- 객체 태그 분포 만들기 또는 태그가 없는 객체 찾기
- AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 암호화되지 않은 모든 객체 찾기
메타데이터 테이블 구성을 위해 인벤토리 테이블을 활성화하면 테이블은 *백필링(backfilling)*이라는 과정을 거치게 돼요. 이 과정에서 Amazon S3가 범용 버킷을 스캔해 버킷의 모든 객체에 대한 초기 메타데이터를 검색해요. 버킷의 객체 수에 따라 이 과정은 수 분(최소 15분)에서 수 시간이 걸릴 수 있어요. 백필링이 끝나면 인벤토리 테이블 상태가 **백필링(Backfilling)**에서 **활성(Active)**으로 바뀌어요. 백필링이 완료된 후에는 일반적으로 객체에 대한 업데이트가 1시간 이내에 인벤토리 테이블에 반영돼요.
참고 인벤토리 테이블 백필링에는 요금이 부과돼요. 범용 버킷에 객체가 10억 개를 초과하면 인벤토리 테이블에 대해 월간 요금도 부과돼요. 자세한 내용은 Amazon S3 요금을 참고하세요.
Amazon S3 Metadata 인벤토리 테이블에는 행과 열이 있어요. 각 행은 범용 버킷의 객체 현재 상태를 나타내요. 인벤토리 테이블은 버킷의 모든 객체에 대한 간단하고 조회 가능한 인벤토리를 제공해서 데이터의 현재 상태를 파악할 수 있게 해줘요.
다음은 amzn-s3-demo-bucket이라는 범용 버킷의 인벤토리 테이블 예시예요.
bucket key sequence_number version_id is_delete_marker size last_modified_date e_tag storage_class is_multipart encryption_status is_bucket_key_enabled kms_key_arn checksum_algorithm object_tags user_metadata
amzn-s3-demo-bucket Finance/statement1.pdf 80e737d8b4d82f776affffffffffffffff006737d8b4d82f776a00000000000000000000000000000000000000000000000072 FALSE 6223 11/15/2024 23:26 e131b86632dda753aac4018f72192b83 STANDARD FALSE SSE-KMS FALSE arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890df SSECRC32 {} {count -> Asia, customs -> false, family -> true, location -> Mary, name -> football, user -> United States}
amzn-s3-demo-bucket s3-dg.pdf 80e737d8b4e39f1dbdffffffffffffffff006737d8b4e39f1dbd00000000000000000000000000000000000000000000000072 FALSE 3554 11/15/2024 23:26 9bb49efc2d92c05558ddffbbde8636d5 STANDARD FALSE DSSE-KMS FALSE arn:aws:kms:us-east-1:936810216292:key/0dcebce6-49fd-4cae-b2e2-5512ad281afd SSESHA1 {} {}
amzn-s3-demo-bucket Development/Projects.xls 80e737d8b4ed9ac5c6ffffffffffffffff006737d8b4ed9ac5c600000000000000000000000000000000000000000000000072 FALSE 7746 11/15/2024 23:26 729a6863e47fb9955b31bfabce984908 STANDARD FALSE SSE-S3 FALSE NULL SSECRC32 {} {count -> Asia, customs -> Canada, family -> Billiards, filter -> true, location -> Europe, name -> Asia, user -> United States}
인벤토리 테이블은 다음과 같은 스키마를 가져요.
| 열 이름 | 필수? | 데이터 타입 | 설명 |
|---|---|---|---|
| bucket | 예 | String | 범용 버킷 이름. 자세한 내용은 범용 버킷 명명 규칙을 참고하세요. |
| key | 예 | String | 버킷에서 객체를 고유하게 식별하는 객체 키 이름(또는 키). 자세한 내용은 Amazon S3 객체 명명을 참고하세요. |
| sequence_number | 예 | String | 주어진 객체에 대한 레코드에 포함되는 서수 값인 시퀀스 번호. 같은 버킷과 키의 레코드를 정렬하려면 sequence_number로 정렬할 수 있어요. 주어진 버킷과 키에 대해 사전식으로 더 큰 sequence_number 값은 그 레코드가 버킷에 더 최근에 도입됐다는 것을 의미해요. |
| object_join_key | 아니요 | String | 새 버전마다 또는 null 버전이 생성되거나 덮어써질 때 할당되는 객체의 고유 식별자. 이 열을 사용해 주석 테이블과 조인해요. |
| version_id | 아니요 | String | 객체의 버전 ID. 버킷에서 버전 관리를 활성화하면 Amazon S3가 버킷에 추가되는 객체에 버전 번호를 할당해요. 자세한 내용은 S3 Versioning으로 객체의 여러 버전 유지하기를 참고하세요. 버전 관리 상태를 설정하기 전에 버킷에 저장된 객체는 version_id가 null이에요. |
| is_delete_marker | 아니요 | Boolean | 객체의 삭제 마커 상태. 객체가 삭제 마커이면 이 값은 True예요. 그렇지 않으면 False예요. 자세한 내용은 삭제 마커 작업을 참고하세요. 참고: 삭제 마커에 대해 추가된 행의 record_type 값은 UPDATE_METADATA가 아닌 DELETE예요. 삭제 마커가 S3 Lifecycle 만료의 결과로 생성된 경우 requester 값은 s3.amazonaws.com이에요. |
| size | 아니요 | Long | 바이트 단위의 객체 크기. 불완전한 멀티파트 업로드나 객체 메타데이터의 크기는 포함하지 않아요. is_delete_marker가 True이면 size는 0이에요. 자세한 내용은 시스템 정의 객체 메타데이터를 참고하세요. |
| last_modified_date | 아니요 | Timestamp NTZ(시간대 없음) | 객체 생성 날짜 또는 마지막 수정 날짜 중 더 최신 것. 멀티파트 업로드의 경우 객체 생성 날짜는 멀티파트 업로드가 시작된 날짜예요. 자세한 내용은 시스템 정의 객체 메타데이터를 참고하세요. |
| e_tag | 아니요 | String | 객체의 해시인 엔터티 태그(ETag). ETag는 객체의 메타데이터가 아닌 콘텐츠에 대한 변경만 반영해요. ETag는 객체 데이터의 MD5 다이제스트일 수 있어요. ETag가 MD5 다이제스트인지 여부는 객체가 어떻게 생성되고 암호화되는지에 따라 달라져요. 자세한 내용은 Amazon S3 API Reference의 Object를 참고하세요. |
| storage_class | 아니요 | String | 객체 저장에 사용되는 스토리지 클래스. STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE 또는 GLACIER_IR 중 하나. 자세한 내용은 Amazon S3 스토리지 클래스 이해 및 관리를 참고하세요. |
| is_multipart | 아니요 | Boolean | 객체의 업로드 유형. 객체가 멀티파트 업로드로 업로드된 경우 이 값은 True예요. 그렇지 않으면 False예요. 자세한 내용은 Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드 및 복사를 참고하세요. |
| encryption_status | 아니요 | String | 사용되는 암호화 키 종류에 따른 객체의 서버 측 암호화 상태: Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3), AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS), AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS), 또는 고객 제공 키를 사용한 서버 측 암호화(SSE-C). 객체가 암호화되지 않은 경우 이 값은 null이에요. 가능한 값은 SSE-S3, SSE-KMS, DSSE-KMS, SSE-C 또는 null이에요. 자세한 내용은 암호화로 데이터 보호하기를 참고하세요. |
| is_bucket_key_enabled | 아니요 | Boolean | 객체의 S3 버킷 키 활성화 상태. 객체가 SSE-KMS에 S3 버킷 키를 사용하는 경우 이 값은 True예요. 그렇지 않으면 False예요. 자세한 내용은 객체 수준에서 S3 버킷 키 구성하기를 참고하세요. |
| kms_key_arn | 아니요 | String | encryption_status가 SSE-KMS 또는 DSSE-KMS인 행에서 객체가 암호화된 KMS 키의 Amazon 리소스 이름(ARN). 객체가 SSE-KMS 또는 DSSE-KMS로 암호화되지 않은 경우 값은 null이에요. 자세한 내용은 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) 사용 및 AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 사용을 참고하세요. 참고: 행이 삭제 또는 덮어쓰기 이벤트가 처리될 당시 더 이상 존재하지 않았던 객체 버전을 나타내는 경우, encryption_status 열 값이 SSE-KMS 또는 DSSE-KMS라 하더라도 kms_key_arn에는 null 값이 포함돼요. |
| checksum_algorithm | 아니요 | String | 객체의 체크섬을 만드는 데 사용되는 알고리즘: CRC64-NVME, CRC32, CRC32C, SHA1, SHA256, MD5, XXHASH64, XXHASH3, XXHASH128 또는 SHA512 중 하나. 체크섬이 없으면 이 값은 null이에요. 자세한 내용은 지원되는 체크섬 알고리즘 사용하기를 참고하세요. |
| object_tags | 아니요 | Map<String, String> | 객체와 연결된 객체 태그. 객체 태그는 키-값 쌍의 맵으로 저장돼요. 객체에 태그가 없으면 빈 맵({})이 저장돼요. 자세한 내용은 객체 태깅을 참고하세요. 참고: record_type 값이 DELETE이면 object_tags 열에 null 값이 포함돼요. record_type 값이 CREATE 또는 UPDATE_METADATA이면 삭제 또는 덮어쓰기 이벤트가 처리될 당시 더 이상 존재하지 않았던 객체 버전을 나타내는 행은 object_tags 열에 null 값이 포함돼요. |
| user_metadata | 아니요 | Map<String, String> | 객체와 연결된 사용자 메타데이터. 사용자 메타데이터는 키-값 쌍의 맵으로 저장돼요. 객체에 사용자 메타데이터가 없으면 빈 맵({})이 저장돼요. 자세한 내용은 사용자 정의 메타데이터를 참고하세요. 참고: record_type 값이 DELETE이면 user_metadata 열에 null 값이 포함돼요. record_type 값이 CREATE 또는 UPDATE_METADATA이면 삭제 또는 덮어쓰기 이벤트가 처리될 당시 더 이상 존재하지 않았던 객체 버전을 나타내는 행은 user_metadata 열에 null 값이 포함돼요. |