Amazon Web Services 한국 블로그
Amazon S3 Metadata, 모든 S3 객체에 대한 메타데이터 지원 시작
이제 Amazon S3 Metadata는 새 객체와 변경 사항뿐만 아니라 Amazon Simple Storage Service(Amazon S3) 버킷에 있는 모든 기존 객체에 대해서도 완전한 가시성을 제공합니다. 이 확장된 적용 범위 덕분에 전체 S3 스토리지 풋프린트에 대한 메타데이터를 분석하고 쿼리할 수 있게 되었습니다.
오늘날 많은 고객들이 Amazon S3를 사용하여 비정형 데이터를 대규모로 저장하고 있습니다. 버킷에 무엇이 있는지 파악하려면 장기적으로 객체를 스캔하고, 변경 사항을 추적하고, 메타데이터를 관리하는 사용자 지정 시스템을 구축하고 유지 관리해야 하는 경우가 많습니다. 이러한 시스템은 유지 관리 비용이 많이 들고, 데이터가 증가함에 따라 최신 상태로 유지하기도 어렵습니다.
지난AWS re:Invent 2024에서 S3 Metadata가 출시된 이후로 Amazon S3 Inventory 또는 객체 수준 API(예: ListObjects
, HeadObject
, GetObject
) 대신 메타데이터 테이블을 사용하여 신규 및 업데이트된 객체 메타데이터를 쿼리할 수 있게 되었지만, 이는 지연 시간을 유발하고 다운스트림 워크플로에 영향을 미칠 수 있습니다.
이 확장된 메타데이터를 쉽게 사용할 수 있도록 S3 Metadata에는 익숙한 SQL 기반 도구에서 작동하는 라이브 인벤토리 테이블이 도입되었습니다. 기존 객체가 시스템에 다시 채워지면 업로드, 삭제 등의 모든 업데이트가 대개 한 시간 이내에 라이브 인벤토리 테이블에 표시됩니다.
S3 Metadata 라이브 인벤토리 테이블은 완전관리형 Apache Iceberg 테이블을 제공합니다. 이 테이블은 다시 채우기 지원을 기반으로, 기존 객체를 포함하여 버킷에 있는 객체와 메타데이터의 완전한 최신 스냅샷을 제공합니다. 이 테이블은 업로드 또는 삭제와 같은 변경 사항이 적용된 후 한 시간 이내에 자동으로 업데이트되므로 항상 최신 정보를 볼 수 있습니다. 암호화되지 않은 데이터, 누락된 태그, 특정 스토리지 클래스 등, 특정 속성을 가진 객체를 식별하고 분석, 비용 최적화, 감사 및 거버넌스를 지원하는 데 이 테이블을 사용할 수 있습니다.
이전에 S3 Metadata 테이블이라고 불렀던 S3 Metadata 저널 테이블은 라이브 인벤토리 테이블을 구성할 때 자동으로 활성화되며, 업로드, 삭제, 메타데이터 업데이트를 비롯한 버킷의 객체 수준 변경 사항을 거의 실시간으로 보여줍니다. 이 테이블은 활동을 감사하고, 객체의 수명 주기를 추적하고, 이벤트 기반 인사이트를 생성하는 데 적합합니다. 일례로, 지난 24시간 동안 삭제된 객체를 찾거나, PUT
작업을 가장 많이 수행한 요청자를 식별하거나, 시간 경과에 따른 객체 메타데이터의 업데이트를 모니터링하는 데 사용할 수 있습니다.
S3 Metadata 테이블은 찾기 쉽도록 버킷 이름과 비슷한 네임스페이스 이름으로 생성됩니다. 이 테이블은 계정과 리전별로 그룹화된 AWS 시스템 테이블 버킷에 저장됩니다. 범용 S3 버킷에 대해 S3 Metadata를 활성화하면 시스템이 이러한 테이블을 자동으로 생성하고 유지 관리합니다. S3 Tables가 백그라운드에서 테이블 유지 관리 작업을 처리하므로 압축 또는 폐영역 회수 프로세스를 관리할 필요가 없습니다.
이러한 새 테이블의 경우 메타데이터 검색을 기다릴 필요 없이 처리가 시작되므로 대규모 분석 및 기계 학습(ML) 워크로드에 적합합니다. 메타데이터를 미리 쿼리하면 GPU 작업을 더 효율적으로 스케줄링하고 컴퓨팅 집약적 환경에서 유휴 시간을 줄일 수 있습니다.
작동 방식 살펴보기
실제로 어떻게 작동하는지 알아보기 위해 AWS Management Console을 사용하여 범용 버킷용 S3 Metadata를 구성해보겠습니다.
범용 버킷을 선택한 후 메타데이터 탭을 선택하고 메타데이터 구성 생성을 선택합니다.
저널 테이블에서 서버 측 암호화 옵션과 레코드 만료 기간을 선택할 수 있습니다. 라이브 인벤토리 테이블에서 활성화됨을 선택하고 서버 측 암호화 옵션을 선택할 수 있습니다.
저널 테이블의 레코드 만료를 구성합니다. 저널 테이블 레코드는 여기에 지정된 일 수, 즉 이 예의 경우 365일(1년) 후에 만료됩니다.
그런 다음 메타데이터 구성 생성을 선택합니다.
S3 Metadata는 라이브 인벤토리 테이블과 저널 테이블을 생성합니다. 라이브 인벤토리 테이블 섹션에서 테이블 상태를 확인할 수 있습니다. 시스템이 즉시 기존 객체 메타데이터로 테이블을 다시 채우기 시작합니다. 이 작업에는 몇 분에서 몇 시간이 걸릴 수 있습니다. 정확한 시간은 S3 버킷에 있는 객체의 양에 따라 달라집니다.
또한 기다리는 동안 저널 테이블에 데이터를 생성하기 위해 객체를 업로드하고 삭제합니다.
그런 다음 Amazon Athena로 이동하여 새 테이블을 쿼리하기 시작합니다.
Athena를 사용한 쿼리 테이블을 선택하여 테이블에 대한 쿼리를 시작합니다. 콘솔에서 몇 가지 기본 쿼리 중 하나를 선택할 수 있습니다.
Athena에서 AWSDataCatalog 데이터 소스의 테이블 구조를 관찰하고, 저널 테이블에 사용 가능한 레코드 수를 확인하는 간단한 쿼리로 시작합니다. 이미 6,488개의 항목이 있습니다.
SELECT count(*) FROM "b_aws_news_blog_metadata_inventory_ns"."journal";
# _col0
1 6488
다음은 저널 테이블에서 시도한 몇 가지 쿼리 예시입니다.
# 지난 24시간 동안 삭제된 객체를 쿼리합니다.
# 버전이 지정된 버킷에는 is_delete_marker=true를 사용하고, 그렇지 않은 버킷에는 record_type='DELETE'를 사용합니다.
SELECT bucket, key, version_id, last_modified_date
FROM "s3tablescatalog/aws-managed-s3"."b_aws_news_blog_metadata_inventory_ns"."journal"
WHERE last_modified_date >=(current_date - interval '1' day) AND is_delete_marker = true;
# 버킷 키 version_id last_modified_date is_delete_marker
1 aws-news-blog-metadata-inventory .build/index-build/arm64-apple-macosx/debug/index/store/v5/records/G0/NSURLSession.h-JET61D329FG0
2 aws-news-blog-metadata-inventory .build/index-build/arm64-apple-macosx/debug/index/store/v5/records/G5/cdefs.h-PJ21EUWKMWG5
3 aws-news-blog-metadata-inventory .build/index-build/arm64-apple-macosx/debug/index/store/v5/records/FX/buf.h-25EDY57V6ZXFX
4 aws-news-blog-metadata-inventory .build/index-build/arm64-apple-macosx/debug/index/store/v5/records/G6/NSMeasurementFormatter.h-3FN8J9CLVMYG6
5 aws-news-blog-metadata-inventory .build/index-build/arm64-apple-macosx/debug/index/store/v5/records/G8/NSXMLDocument.h-1UO2NUJK0OAG8
# 최근 PUT 요청 IP 주소를 쿼리합니다.
SELECT source_ip_address, count(source_ip_address)
FROM "s3tablescatalog/aws-managed-s3"."b_aws_news_blog_metadata_inventory_ns"."journal"
GROUP BY source_ip_address;
# source_ip_address _col1
1 my_laptop_IP_address 12488
# 지난 7일 동안 S3 수명 주기가 만료된 객체를 쿼리합니다.
SELECT bucket, key, version_id, last_modified_date, record_timestamp
FROM "s3tablescatalog/aws-managed-s3"."b_aws_news_blog_metadata_inventory_ns"."journal"
WHERE requester = 's3.amazonaws.com' AND record_type = 'DELETE' AND record_timestamp >(current_date - interval '7' day);
(내 데모 버킷에는 적용되지 않음)
해당 결과는 타임스탬프를 포함하여 제거된 특정 개체를 추적하는 데 도움이 되었습니다.
이제 라이브 인벤토리 테이블을 살펴보겠습니다.
# 객체 태그 배포
SELECT object_tags, count(object_tags)
FROM "s3tablescatalog/aws-managed-s3"."b_aws_news_blog_metadata_inventory_ns"."inventory"
GROUP BY object_tags;
# object_tags _col1
1 {Source=Swift} 1
2 {Source=swift} 1
3 {} 12486
# 특정 태그의 스토리지 클래스와 크기를 쿼리합니다.
SELECT storage_class, count(*) as count, sum(size) / 1024 / 1024 as usage
FROM "s3tablescatalog/aws-managed-s3"."b_aws_news_blog_metadata_inventory_ns"."inventory"
GROUP BY object_tags['pii=true'], storage_class;
# storage_class count usage
1 STANDARD 124884 165
# 특정 사용자 정의 메타데이터가 있는 객체를 찾습니다.
SELECT key, last_modified_date, user_metadata
FROM "s3tablescatalog/aws-managed-s3"."b_aws_news_blog_metadata_inventory_ns"."inventory"
WHERE cardinality(user_metadata) >0 ORDER BY last_modified_date DESC;
(내 데모 버킷에는 적용되지 않음)
이들 예시는 S3 Metadata로 가능한 작업의 일부에 불과합니다. 적합한 쿼리는 사용 사례에 따라 다릅니다. 더 많은 예를 보려면 AWS Storage Blog에서 Amazon Athena 및 Amazon QuickSight를 사용하여 Amazon S3 Metadata 분석을 참조하세요.
요금 및 가용성
S3 Metadata 라이브 인벤토리 및 저널 테이블은 현재 미국 동부(오하이오, 버지니아 북부) 및 미국 서부(캘리포니아 북부)에서 사용할 수 있습니다.
저널 테이블에는 업데이트 100만 건당 0.30 USD의 요금이 부과됩니다. 이는 이전보다 33% 낮아진 가격입니다.
인벤토리 테이블의 경우 테이블을 설정하고 기존 객체에 대한 메타데이터를 생성하는 데 객체 100만 개마다 0.30 USD의 일회성 다시 채우기 비용이 발생합니다. 버킷의 객체가 10억 개 미만인 경우 추가 비용이 발생하지 않습니다. 10억 개 이상의 객체가 있는 버킷의 경우 객체 100만 개당 0.10 USD의 월별 요금이 부과됩니다.
다른 서비스와 마찬가지로 Amazon S3 요금 페이지에서 모든 세부 정보를 확인할 수 있습니다.
S3 Metadata 라이브 인벤토리 및 저널 테이블을 사용하면 대규모 데이터세트를 탐색하고 관리하는 데 소요되는 시간과 노력을 줄일 수 있습니다. 스토리지에 대한 최신 보기와 변경 기록이 제공되며, 두 가지 모두 필요에 따라 쿼리할 수 있는 Iceberg 테이블로 제공됩니다. 데이터를 더 빠르게 검색하고, 규정 준수 워크플로를 강화하고, ML 파이프라인을 최적화할 수 있습니다.
AWS Console, AWS Command Line Interface(AWS CLI) 또는 AWS SDKs를 통해 S3 버킷의 메타데이터 인벤토리를 활성화하여 시작할 수 있습니다. 메타데이터 인벤토리를 활성화하면 저널 테이블과 라이브 인벤토리 테이블이 자동으로 생성되고 업데이트됩니다. 자세히 알아보려면 S3 Metadata 설명서 페이지를 참조하세요.