Amazon Web Services ブログ

Amazon S3 Metadata が、すべての S3 オブジェクトのメタデータのサポートを開始

Amazon S3 Metadata は、新規オブジェクトや変更を超えて拡張され、Amazon Simple Storage Service (Amazon S3) バケット内のすべての既存オブジェクトについての完全な可視性を提供するようになりました。この拡張されたカバレッジにより、S3 ストレージフットプリント全体のメタデータを分析およびクエリできます。

現在、多くのお客様が非構造化データを大規模に保存するために Amazon S3 を利用しています。バケットに含まれているものを把握するには、多くの場合、時間が経過する中で、オブジェクトのスキャン、変更の追跡、メタデータの管理を行うカスタムシステムを構築および維持する必要があります。これらのシステムは維持コストが高く、データが増加する中で最新の状態に保つのが困難です。

re:Invent 2024 での S3 Metadata のリリース以降、Amazon S3 インベントリListObjectsHeadObjectGetObject などのオブジェクトレベルの API に依拠する代わりに、メタデータテーブルを使用して新規および更新されたオブジェクトメタデータをクエリできるようになりました。これらの API はレイテンシーを発生させ、下流のワークフローに影響を及ぼす可能性があります。

この拡張されたメタデータをより簡単に利用できるように、S3 Metadata では、使い慣れた SQL ベースのツールで動作するライブインベントリテーブルが導入されています。既存のオブジェクトがシステムにバックフィルされた後、アップロードや削除などの更新は通常、1 時間以内にライブインベントリテーブルに反映されます。

S3 Metadata ライブインベントリテーブルを使用すると、バックフィルのサポートのおかげで、バケット内のオブジェクトとそのメタデータ (既存のオブジェクトを含む) の完全かつ最新のスナップショットを提供するフルマネージド Apache Iceberg テーブルを利用できます。これらのテーブルは、アップロードや削除などの変更から 1 時間以内に自動的に更新されるため、常に最新の状態を維持できます。これらのテーブルを使用して、暗号化されていないデータ、不足しているタグ、特定のストレージクラスなど、特定のプロパティを持つオブジェクトを識別し、分析、コスト最適化、監査、ガバナンスをサポートできます。

S3 Metadata ジャーナルテーブル (旧称: S3 Metadata テーブル) は、ライブインベントリテーブルを設定すると自動的に有効になり、アップロード、削除、メタデータの更新など、バケット内のオブジェクトレベルの変更をほぼリアルタイムで表示します。これらのテーブルは、アクティビティの監査、オブジェクトのライフサイクルの追跡、イベントドリブンのインサイトの生成に最適です。例えば、過去 24 時間以内に削除されたオブジェクトを特定したり、最も多くの PUT オペレーションを実行しているリクエスタを特定したり、オブジェクトのメタデータの更新を経時的にモニタリングしたりできます。

S3 Metadata テーブルは、より簡単に見つけられるように、バケット名に似た名前空間で作成されます。テーブルは、アカウントおよびリージョンごとにグループ化された AWS システムテーブルバケットに保存されます。汎用 S3 バケットのために S3 Metadata を有効にすると、システムによってこれらのテーブルが作成および維持されます。圧縮やガベージコレクションのプロセスを管理する必要はなく、S3 Tables がバックグラウンドでテーブルメンテナンスタスクを処理します。

これらの新しいテーブルは、メタデータの検出を待たずに処理を開始するのに役立つため、大規模な分析や機械学習 (ML) ワークロードに最適です。事前にメタデータをクエリすることで、GPU ジョブをより効率的にスケジュールし、コンピューティング負荷の高い環境でのアイドル時間を短縮できます。

仕組みを見てみましょう
これが実際にどのように機能するかを確認するために、AWS マネジメントコンソールを使用して汎用バケットのために S3 Metadata を設定します。

S3 Metadata、汎用バケットから開始

汎用バケットを選択したら、[メタデータ] タブを選択し、[メタデータ設定を作成] を選択します。

S3 Metadata、ジャーナルテーブルおよびインベントリテーブルを設定[ジャーナルテーブル] では、[サーバー側の暗号化] オプションと [レコードの有効期限] の期間を選択できます。[ライブインベントリテーブル] で、[有効] を選択し、[サーバー側の暗号化] オプションを選択できます。

ジャーナルテーブルで [レコードの有効期限] を設定します。ジャーナルテーブルのレコードは、指定した日数 (この例では 365 日間 (1 年間) が経過すると失効します。

その後、[メタデータ設定を作成] を選択します。

S3 Metadata、バックフィル中

S3 Metadata は、ライブインベントリテーブルとジャーナルテーブルを作成します。[ライブインベントリテーブル] セクションで、[テーブルステータス] を確認できます: システムは、既存のオブジェクトメタデータを使用して、テーブルのバックフィルを直ちに開始します。これには数分から数時間かかる場合があります。正確な時間は、S3 バケット内にあるオブジェクトの数によって異なります。

また、待機中に、ジャーナルテーブルにデータを生成するために、オブジェクトをアップロードおよび削除します。

その後、Amazon Athena に移動して、新しいテーブルのクエリを開始します。

S3 Metadata、Athena を使用してクエリ

テーブルのクエリを開始するには、[Athena でテーブルのクエリを実行] を選択します。コンソールでは、いくつかのデフォルトクエリから選択できます。

S3 MetaData テーブルの構造

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;

# bucket key 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);

(not applicable to my demo bucket)

結果は、削除された特定のオブジェクトとそのタイムスタンプを追跡するのに役立ちました。

次に、ライブインベントリテーブルを見てみましょう:

# オブジェクトタグの分布
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;

(not applicable to my demo bucket)

これらは、S3 Metadata で可能なことのほんの一例です。お客様に適したクエリはユースケースによって異なります。他の例については、AWS ストレージブログの「Analyzing Amazon S3 Metadata with Amazon Athena and Amazon QuickSight」をご覧ください。

料金と利用可能なリージョン
S3 Metadata のライブインベントリテーブルとジャーナルテーブルは現在、米国東部 (オハイオ、バージニア北部) と米国西部 (北カリフォルニア) でご利用いただけます。

ジャーナルテーブルでは、100 万件の更新ごとに 0.30 USD かかります。これは以前の料金から 33% 低い料金です。

インベントリテーブルでは、テーブルをセットアップし、既存のオブジェクトのメタデータを生成するために、100 万個のオブジェクトごとに 0.30 USD の 1 回限りのバックフィルコストがかかります。バケットに含まれるオブジェクトが 10 億個未満の場合は、追加コストは発生しません。10 億を超えるオブジェクトを含むバケットの場合、100 万個のオブジェクトごとに 0.10 USD/月の月額料金がかかります。

いつものように、Amazon S3 の料金ページで詳細をご確認ください。

S3 Metadata のライブインベントリテーブルとジャーナルテーブルを使用すると、大規模なデータセットの探索と管理にかかる時間と労力を削減できます。ストレージの最新ビューと変更記録を取得でき、両方ともオンデマンドでクエリできる Iceberg テーブルとしてご利用いただけます。データをより迅速に検出し、コンプライアンスワークフローを強化して、ML パイプラインを最適化できます。

AWS コンソール、AWS コマンドラインインターフェイス (AWS CLI)、または AWS SDK を通じて、S3 バケットでメタデータインベントリを有効にすることで、使用を開始できます。有効にすると、ジャーナルテーブルとライブインベントリテーブルが自動的に作成および更新されます。詳細については、S3 Metadata のドキュメントページにアクセスしてください。

– seb

原文はこちらです。