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

S3 Inventory는 S3 Bucket에 저장된 객체 정보(예: 크기, 스토리지 클래스, 암호화 상태 등)를 보고서 형태(예: CSV, ORC, Parquet)로 제공하는 기능입니다. 이를 통해 S3 Bucket에 저장된 객체들의 현황을 식별할 수 있습니다.
ListObjectsV2 API를 사용하여 객체를 조회하는 방법은 객체의 수가 적은 경우, 효과적일 수 있습니다. 하지만 해당 방법은 기본적으로 동기식이고, 한 번의 요청에 1,000개의 객체를 조회할 수 있기 때문에 조회해야하는 객체의 수가 많아질 수록, 비효율적인 방법입니다.
S3 Inventory를 사용하면 비동기식으로, 대량의 객체를 효과적으로 조회할 수 있습니다.
S3 Inventory 설정 시 보고서를 매주 또는 매일 생성되도록 설정할 수 있습니다.
S3 Inventory를 설정 시, 최초로 생성되는 보고서는 최대 48시간 걸릴 수 있습니다.
S3 Inventory 설정마다 적용되는 사항으로, 새로운 S3 Inventory를 생성 시 해당 S3 Inventory 설정에 대한 Report는 최대 48시간이상 소요될 수 있습니다.S3 Inventory는 GZIP으로 압축된 CSV, ZLIB으로 압축된 Apach ORC, Snappy로 압축된 Apach Parquet 형식 중 하나로 보고서를 지정한 버킷에 저장할 수 있습니다.S3 Inventory 통해 생성된 보고서에는 Bucket Name, Object Key 이외에 다양한 메타데이터를 포함하도록 구성할 수 있습니다. https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/storage-inventory.html?icmpid=docs_amazons3_console#storage-inventory-contentsS3 Inventory 설정을 통해서 Report를 작성 시, Report 파일이 저장되는 Destination Bucket에는 S3 서비스(s3.amazonaws.com)가 s3:PutObject를 허용하도록 정책을 구성해야 합니다. https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-s3-inventory-1Bucket에 설정된 Inventory 설정 목록 확인 명령어
aws s3api list-bucket-inventory-configurations \
--profile default \
--bucket <Bucket Name>
Inventory Configuration 설정 명령어
aws s3api put-bucket-inventory-configuration \
--profile default \
--bucket <Source Bucket Name> \
--id <Inventory Configuration Name> \
--inventory-configuration '{
"Id": <Inventory Configuration Name>,
"Destination": {
"S3BucketDestination": {
"AccountId": <Destination Bucket Accout ID>,
"Bucket": <Destination Bucket ARN>,
"Format": <Inventort Report FIle Format (CSV | ORC | Parquet),
"Prefix": <Destionation Bucket Sub Path>,
}
},
"IsEnabled": true,
"Filter": {
"Prefix":<Source Bucket Sub Path >
},
"IncludedObjectVersions": "Current",
"Schedule": {
"Frequency": "Weekly"
},
"OptionalFields": [
"Size",
<Additional Report Parameter>
]
}'