S3 メタデータによるデータ検出の高速化 - Amazon Simple Storage Service

S3 メタデータによるデータ検出の高速化

Amazon S3 Metadata は、汎用バケット内のオブジェクトのメタデータを自動的にキャプチャし、クエリできる読み取り専用のフルマネージド Apache Iceberg テーブルに保存することで、データ検出を高速化します。これらの読み取り専用テーブルはメタデータテーブルと呼ばれます。オブジェクトが汎用バケットに追加、更新、削除されると、S3 Metadata は対応するメタデータテーブルを自動的に更新して、最新の変更を反映します。

デフォルトでは、S3 メタデータは次の 3 種類のメタデータを提供します。

  • オブジェクトの作成時刻やストレージクラスなどのシステム定義メタデータ

  • オブジェクトのアップロード時に含められたタグやユーザー定義メタデータなどのカスタムメタデータ

  • オブジェクトが更新または削除されたときや、リクエストを行った AWS アカウントなどのイベントメタデータ

S3 メタデータを使用すると、S3 オブジェクトのメタデータを簡単に検索、保存、クエリできるため、ビジネス分析、コンテンツ取得、人工知能と機械学習 (AI/ML) モデルトレーニングなどで使用するデータをすばやく準備できます。

汎用バケットごとに、2 つの補完メタデータテーブルを含むメタデータテーブル設定を作成できます。

  • ジャーナルテーブル – デフォルトでは、メタデータテーブル設定には、バケット内のオブジェクトで発生したイベントをキャプチャするジャーナルテーブルが含まれます。ジャーナルテーブルは、データに加えられた変更をほぼリアルタイムで記録するため、バケットにアップロードされた新しいデータの特定、最近削除されたオブジェクトの追跡、ライフサイクルの移行のモニタリングなどに役立ちます。ジャーナルテーブルには、新しいオブジェクトと、オブジェクトとそのメタデータに対する更新 (PUT または DELETE オペレーションを必要とする更新) が記録されます。

    ジャーナルテーブルは、メタデータテーブル設定を作成した後に発生する変更イベント (アップロード、更新、削除など) のメタデータのみをキャプチャします。このテーブルはクエリ可能であるため、単純な SQL クエリを使用してバケットへの変更を監査できます。

    ジャーナルテーブルは、メタデータテーブル設定ごとに必要です。(S3 Metadata の初回リリースでは、ジャーナルテーブルは「メタデータテーブル」と呼ばれていました)。

    ジャーナルテーブルに保存されるデータの詳細については、「S3 Metadata ジャーナルテーブルスキーマ」を参照してください。

    ストレージコストを最小限に抑えるために、ジャーナルテーブルレコードの有効期限を有効にするように選択できます。詳細については、「ジャーナルテーブルレコードを期限切れにする」を参照してください。

  • ライブインベントリテーブル – オプションで、メタデータテーブル設定にライブインベントリテーブルを追加できます。ライブインベントリテーブルは、バケット内のすべてのオブジェクトとそのバージョンのシンプルでクエリ可能なインベントリを提供するため、データの最新の状態を判断できます。

    ライブインベントリテーブルを使用すると、さまざまなワークロードに対して処理するオブジェクトを特定することで、ビジネスワークフローとビッグデータジョブを簡素化および高速化できます。例えば、ライブインベントリテーブルをクエリして、特定のストレージクラスに保存されているすべてのオブジェクト、特定のタグを持つすべてのオブジェクト、 AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用したサーバー側の暗号化で暗号化されていないすべてのオブジェクトなどを検索できます。

    メタデータテーブル設定のライブインベントリテーブルを有効にすると、テーブルはバックフィルと呼ばれるプロセスを実行し、そのプロセス中に Amazon S3 は汎用バケットをスキャンして、バケットに存在するすべてのオブジェクトの初期メタデータを取得します。バケット内のオブジェクトの数によっては、このプロセスに数分 (最小 15 分) から数時間かかる場合があります。バックフィルプロセスが完了すると、ライブインベントリテーブルのステータスが [バックフィル] から [アクティブ] に変わります。バックフィルが完了すると、通常、オブジェクトの更新は 1 時間以内にライブインベントリテーブルに反映されます。

    インベントリテーブルのバックフィルの実行は課金されます。汎用バケットに 10 億個を超えるオブジェクトがある場合は、ライブインベントリテーブルの月額料金も請求されます。詳細については、Amazon S3 の料金 を参照してください。

    ライブインベントリテーブルに保存されるデータの詳細については、「S3 Metadata ライブインベントリテーブルスキーマ」を参照してください。

メタデータテーブルは、表形式データ用に最適化されたストレージを提供する AWS マネージド S3 テーブルバケットに保存されます。メタデータをクエリするために、テーブルバケットを Amazon SageMaker Lakehouse と統合できます。AWS Glue Data Catalog および AWS Lake Formation を使用するこの統合により、AWS 分析サービスがテーブルデータを自動的に検出してアクセスできるようになります。

テーブルバケットが AWS Glue Data Catalog と統合されると、Amazon Athena、Amazon EMR、Amazon Redshift などの AWS 分析サービスを使用してメタデータテーブルを直接クエリできます。そこから、Amazon QuickSight を使用して、クエリデータでインタラクティブなダッシュボードを作成できます。AWS マネージド S3 テーブルバケットと Amazon SageMaker Lakehouse の統合の詳細については、「Amazon S3 Tables と AWS 分析サービスの統合」を参照してください。

AWS Glue Iceberg REST エンドポイント、Amazon S3 Tables Iceberg REST エンドポイント、または Apache Iceberg クライアントカタログの Amazon S3 Tables Catalog を使用して、Apache Spark、Apache Trino、および Apache Iceberg 形式をサポートする他のアプリケーションでメタデータテーブルをクエリすることもできます。メタデータテーブルへのアクセスの詳細については、「テーブルデータへのアクセス」を参照してください。

S3 メタデータの料金については、「Amazon S3 の料金」を参照してください。

メタデータテーブルの仕組み

メタデータテーブルは Amazon S3 によって管理され、Amazon S3 自体の外部にある IAM プリンシパルによって変更することはできません。ただし、メタデータテーブルを削除することはできます。その結果、メタデータテーブルは読み取り専用になり、汎用バケットの内容が正しく反映されます。

オブジェクトメタデータを生成して AWS マネージドメタデータテーブルに保存するには、汎用バケットのメタデータテーブル設定を作成します。Amazon S3 は、汎用バケットで設定がアクティブである限り、メタデータテーブルを継続的に更新してデータへの最新の変更を反映するように設計されています。

メタデータテーブル設定を作成する前に、メタデータテーブルを作成および管理するために必要な AWS Identity and Access Management (IAM) アクセス許可があることを確認してください。詳細については、「メタデータテーブルを設定するためのアクセス許可の設定」を参照してください。

メタデータテーブルのストレージ、整理、暗号化

メタデータテーブル設定を作成すると、メタデータテーブルは AWS マネージドテーブルバケットに保存されます。アカウントと同じリージョンのすべてのメタデータテーブル設定は、単一の AWS マネージドテーブルバケットに保存されます。これらの AWS マネージドテーブルバケットの名前は aws-s3 であり、Amazon リソースネーム (ARN) 形式は次のようになります。

arn:aws:s3tables:region:account_id:bucket/aws-s3

例えば、アカウント ID が 123456789012 で、汎用バケットが米国東部 (バージニア北部) (us-east-1) にある場合、AWS マネージドテーブルバケットも米国東部 (バージニア北部) (us-east-1) で作成され、次の ARN があります。

arn:aws:s3tables:us-east-1:123456789012:bucket/aws-s3

デフォルトでは、AWS マネージドテーブルバケットは、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用して暗号化されます。最初のメタデータ設定を作成したら、AWS マネージドテーブルバケットのデフォルトの暗号化設定を設定して、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用できます。詳細については、「Encryption for AWS managed table buckets」および「テーブルバケットでの AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の指定」を参照してください。

AWS マネージドテーブルバケット内では、設定のメタデータテーブルは通常、次の命名形式の名前空間に保存されます。

b_general-purpose-bucket-name

注記
  • 汎用バケット名にピリオドが含まれている場合、ピリオドは名前空間名のアンダースコア (_) に変換されます。

  • 汎用バケットが 2018 年 3 月 1 日より前に作成された場合、その名前には大文字とアンダースコアが含まれ、最大 255 文字の長さになる場合があります。バケット名にこれらの特性がある場合、メタデータテーブル名前空間の形式は異なります。汎用バケット名には b_ というプレフィックスが付けられ、63 文字に切り捨てられ、すべて小文字に変換されて、ハッシュでサフィックスが付けられます。

メタデータテーブルの Amazon リソースネーム (ARN) 形式は次のようになります。

arn:aws:s3tables:region-code:account-id:bucket/aws-s3/table/metadata_table_name

ジャーナルテーブルの名前は journal で、ライブインベントリテーブルの名前は inventory です。

メタデータテーブル設定を作成するときに、AWS マネージドメタデータテーブルを AWS Key Management Service (AWS KMS) キーを使用したサーバー側の暗号化 (SSE-KMS) で暗号化することを選択できます。SSE-KMS を使用する場合は、汎用バケットと同じリージョンにカスタマーマネージド KMS キーを指定する必要があります。テーブルの暗号化タイプは、テーブルの作成中にのみ設定できます。AWS マネージドテーブルの作成後は、暗号化設定を変更することはできません。メタデータテーブルに SSE-KMS を指定するには、特定のアクセス許可が必要です。詳細については、「SSE-KMS のアクセス許可」を参照してください。

メタデータテーブルの暗号化設定は、デフォルトのバケットレベルの暗号化設定よりも優先されます。暗号化を指定しない場合、テーブルはバケットのデフォルト暗号設定を継承します。

AWS マネージドテーブルバケットは、S3 Tables クォータにはカウントされません。AWS マネージドテーブルバケットと AWS マネージドテーブルの操作の詳細については、「Working with AWS managed table buckets」を参照してください。

メタデータテーブル設定の更新をモニタリングするには、AWS CloudTrail を使用できます。詳細については、「CloudTrail ログ記録によって追跡される Amazon S3 バケットレベルのアクション」を参照してください。

メタデータテーブルのメンテナンスとレコードの有効期限

メタデータテーブルのパフォーマンスを最適な状態に維持するために、Amazon S3 は、圧縮や参照されていないファイルの削除などの定期的なメンテナンスアクティビティをテーブルに対して実行します。これらのメンテナンスアクティビティは、メタデータテーブルの保存コストを最小限に抑え、クエリのパフォーマンスを最適化するのに役立ちます。このテーブルのメンテナンスは自動的に行われるため、オプトインや継続的な管理は必要ありません。

注記
  • ジャーナルテーブルまたはインベントリテーブルスナップショットの有効期限を制御することはできません。テーブルごとに、Amazon S3 は最低 1 つのスナップショットを最大 24 時間保存します。

  • コストを最小限に抑えるために、ジャーナルテーブルレコードの有効期限を設定できます。デフォルトでは、ジャーナルテーブルレコードは期限切れにならず、ジャーナルテーブルレコードは最低 7 日間保持する必要があります。詳細については、「ジャーナルテーブルレコードを期限切れにする」を参照してください。