メタデータテーブル設定の作成 - Amazon Simple Storage Service

メタデータテーブル設定の作成

Amazon S3 Metadata を生成してフルマネージド Apache Iceberg メタデータテーブルに保存するには、汎用バケットのメタデータテーブル設定を作成します。Amazon S3 は、バケットで設定がアクティブである限り、メタデータテーブルを継続的に更新してデータへの最新の変更を反映するように設計されています。さらに、Amazon S3 はメタデータテーブルを継続的に最適化して、ストレージコストを削減し、分析クエリのパフォーマンスを向上させます。

汎用バケットごとに、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 ライブインベントリテーブルスキーマ」を参照してください。

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

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

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

メタデータテーブル設定を作成すると、メタデータテーブルは 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

メタデータテーブル名前空間の詳細については、「メタデータテーブルの仕組み」を参照してください。

メタデータテーブル設定を作成するときに、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」を参照してください。

メタデータテーブル設定は、Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して作成できます。

注記
  • 2025 年 7 月 15 日より前に S3 Metadata 設定を作成した場合は、ジャーナルテーブルレコードを期限切れにしてインベントリテーブルを作成できるように、設定を削除して再作成することをお勧めします。詳細については、「2025 年 7 月 15 日より前に作成されたメタデータ設定でインベントリテーブルを有効にする」を参照してください。

  • メタデータテーブル設定を削除し、同じ汎用バケットの設定を再作成する場合は、まず AWS マネージドテーブルバケットから古いジャーナルテーブルとインベントリテーブルを手動で削除する必要があります。削除しない場合、新しいメタデータテーブル設定の作成は、それらのテーブルが既に存在するため失敗します。メタデータテーブルを削除するには、「メタデータテーブルを削除する」を参照してください。

    メタデータテーブル設定を削除すると、設定のみが削除されます。メタデータテーブル設定を削除しても、AWS マネージドテーブルバケットとメタデータテーブルは引き続き存在します。

前提条件

メタデータテーブル設定を作成する前に、以下の前提条件が満たされていることを確認してください。

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

  • Amazon Athena または他の AWS クエリエンジンを使用してメタデータテーブルをクエリする場合は、AWS マネージドテーブルバケットを AWS 分析サービスと統合してください。詳細については、「Amazon S3 Tables と AWS 分析サービスの統合」を参照してください。

    このリージョンに既存のテーブルバケットを既に統合している場合は、AWS マネージドテーブルバケットも自動的に統合されます。このリージョンのテーブルバケットの統合ステータスを確認するには、Amazon S3 コンソールを開き、左側のナビゲーションペインで [テーブルバケット] を選択します。[AWS 分析サービスとの統合] で、リージョンを確認し、統合ステータスが [有効] になっているかどうかを確認します。

メタデータテーブル設定を作成する

メタデータテーブル設定を作成するには

メタデータテーブル設定を作成する前に、必ず前提条件を確認して満たし、メタデータテーブルの制限と制約 を確認してください。

  1. AWS Management Console にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/ を開きます。

  2. 左のナビゲーションペインで、[汎用バケット] を選択します。

  3. メタデータテーブル設定を作成する汎用バケットを選択します。

    注記

    この汎用バケットが、テーブルバケットが使用可能な AWS リージョンであることを確認します。テーブルバケットは、米国東部 (バージニア北部)、米国東部 (オハイオ)、および米国西部 (オレゴン) リージョンでのみ使用できます。

  4. バケットの詳細ページで、[メタデータ] タブを選択します。

  5. [メタデータ] タブで、[メタデータ設定を作成] を選択します。

  6. [メタデータ設定の作成] ページのジャーナルテーブルで、AWS Key Management Service (AWS KMS) キーを使用したサーバー側の暗号化 (SSE-KMS) でテーブルを暗号化するかどうかを選択できます。デフォルトでは、ジャーナルバケットは、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用して暗号化されます。

    SSE-KMS を使用する場合は、汎用バケットと同じリージョンにカスタマーマネージド KMS キーを指定する必要があります。

    重要

    メタデータテーブルの暗号化タイプは、テーブルの作成中にのみ設定できます。AWS マネージドテーブルの作成後は、暗号化設定を変更することはできません。

    • ジャーナルテーブルを SSE-S3 (デフォルト) で暗号化するには、[暗号化タイプを指定しない] を選択します。

    • ジャーナルテーブルを SSE-KMS で暗号化するには、[暗号化タイプを指定する] を選択します。[暗号化タイプ] で、[AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用したサーバー側の暗号化] を選択します。[AWS KMS キー] で、既存の KMS キーから選択するか、KMS キー ARN を入力します。KMS キーがまだない場合は、[KMS キー ARN を入力] を選択し、[KMS キーを作成する] を選択します。

      SSE-KMS に必要なアクセス許可が設定されていることを確認します。詳細については、「SSE-KMS のアクセス許可」を参照してください。

  7. (オプション) デフォルトでは、ジャーナルテーブルのレコードは期限切れになりません。ジャーナルテーブルのストレージコストを最小限に抑えるには、[レコードの有効期限] で、[有効] を選択します。

    ジャーナルテーブルレコードの有効期限を有効にすると、ジャーナルテーブルレコードを保持する日数を設定できます。[レコードの有効期限が切れるまでの日数] を設定するには、72147483647 の任意の整数を指定できます。例えば、ジャーナルテーブルレコードを 1 年間保持するには、この値を 365 に設定します。

    レコードは期限切れの対象になってから 24~48 時間以内に無効になります。

    重要

    ジャーナルテーブルレコードの有効期限が切れると、復元できません。

    [ジャーナルテーブルレコードは指定された日数後に期限切れになる] で、チェックボックスをオンにします。

  8. (オプション) メタデータテーブル設定にインベントリテーブルを追加する場合は、[ライブインベントリテーブル] で、[設定ステータス][有効] を選択します。

    AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用してサーバー側の暗号化でテーブルを暗号化するかどうかを選択できます。デフォルトでは、インベントリテーブルは、Amazon S3 マネージドキーを使用してサーバー側の暗号化 (SSE-S3) を使用して暗号化されます。

    SSE-KMS を使用する場合は、汎用バケットと同じリージョンにカスタマーマネージド KMS キーを指定する必要があります。

    重要

    メタデータテーブルの暗号化タイプは、テーブルの作成中にのみ設定できます。AWS マネージドテーブルの作成後は、暗号化設定を変更することはできません。

    • インベントリテーブルを SSE-S3 (デフォルト) で暗号化するには、[暗号化タイプを指定しない] を選択します。

    • インベントリテーブルを SSE-KMS で暗号化するには、[暗号化タイプを指定する] を選択します。[暗号化タイプ] で、[AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用したサーバー側の暗号化] を選択します。[AWS KMS キー] で、既存の KMS キーから選択するか、KMS キー ARN を入力します。KMS キーがまだない場合は、[KMS キー ARN を入力] を選択し、[KMS キーを作成する] を選択します。

      SSE-KMS に必要なアクセス許可が設定されていることを確認します。詳細については、「SSE-KMS のアクセス許可」を参照してください。

  9. [メタデータテーブル設定を作成] を選択します。

メタデータテーブルの設定が成功すると、メタデータテーブルの名前と ARNs が、AWS マネージドテーブルバケットと名前空間の名前とともに [メタデータ] タブに表示されます。

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

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

次のコマンドを実行するには、AWS CLI をインストールして設定する必要があります。AWS CLI をまだインストールしていない場合は、「AWS Command Line Interface ユーザーガイド」の「AWS CLI の最新バージョンのインストールまたは更新」を参照してください。

別の方法として、AWS CloudShell を使用してコンソールから AWS CLI コマンドを実行することもできます。AWS CloudShell は、AWS Management Consoleから直接起動できる、ブラウザベースの事前認証済みシェルです。詳細については、「AWS CloudShell ユーザーガイド」の「CloudShell とは」と「AWS CloudShell の使用開始」を参照してください。

AWS CLI を使用してメタデータテーブル設定を作成するには

メタデータテーブル設定を作成する前に、必ず前提条件を確認して満たし、メタデータテーブルの制限と制約 を確認してください。

次のコマンド例を使用する際は、user input placeholders をユーザー自身の情報に置き換えます。

  1. メタデータテーブル設定を含む JSON ファイルを作成し、保存します (例: metadata-config.json)。以下は、設定例です。

    ジャーナルテーブルレコードの有効期限を有効または無効にするかどうかを指定する必要があります。レコードの有効期限を有効にする場合は、ジャーナルテーブルレコードの有効期限が切れるまでの日数も指定する必要があります。Days 値を設定するには、72147483647 の任意の整数を指定できます。例えば、ジャーナルテーブルレコードを 1 年間保持するには、この値を 365 に設定します。

    オプションで、インベントリテーブルの設定を選択できます。

    ジャーナルテーブルとインベントリテーブルの両方で、オプションで暗号化設定を指定できます。デフォルトでは、メタデータテーブルは Amazon S3 マネージドキー (SSE-S3) を使用したサーバー側の暗号化で暗号化されます。この暗号化は、SseAlgorithmAES256 に設定することで指定できます。

    AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用してサーバー側の暗号化でメタデータテーブルを暗号化するには、SseAlgorithmaws:kms に設定します。また、汎用バケットがあるリージョンと同じリージョンで、カスタマーマネージド KMS キーの ARN に KmsKeyArn を設定する必要があります。

    { "JournalTableConfiguration": { "RecordExpiration": { "Expiration": "ENABLED", "Days": 10 }, "EncryptionConfiguration": { "SseAlgorithm": "AES256" } }, "InventoryTableConfiguration": { "ConfigurationState": "ENABLED", "EncryptionConfiguration": { "SseAlgorithm": "aws:kms", "KmsKeyArn": "arn:aws:kms:us-east-2:account-id:key/key-id" } } }
  2. 次のコマンドを使用して、メタデータテーブル設定を汎用バケット (例: amzn-s3-demo-bucket) に適用します。

    aws s3api create-bucket-metadata-configuration \ --bucket amzn-s3-demo-bucket \ --metadata-configuration file://./metadata-config.json \ --region us-east-2
  3. 設定が作成されたことを確認するには、次のコマンドを使用します。

    aws s3api get-bucket-metadata-configuration \ --bucket amzn-s3-demo-bucket \ --region us-east-2

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

REST リクエストを送信して、メタデータテーブル設定を作成できます。詳細については、「Amazon S3 API リファレンス」の「CreateBucketMetadataConfiguration」を参照してください。

AWS SDK を使用して、Amazon S3 でメタデータテーブル設定を作成できます。詳細については、「Amazon S3 API Reference」にある「サポートされる SDK のリスト」を参照してください。

2025 年 7 月 15 日より前に作成されたメタデータ設定でインベントリテーブルを有効にする

2025 年 7 月 15 日より前に S3 Metadata 設定を作成した場合は、ジャーナルテーブルレコードを期限切れにしてインベントリテーブルを作成できるように、設定を削除して再作成することをお勧めします。古い設定の削除と新しい設定の作成の間に発生する汎用バケットへの変更は、いずれのジャーナルテーブルにも記録されません。

古いメタデータ設定から新しい設定に移行するには、次の手順を実行します。

  1. 既存のメタデータテーブル設定を削除します。手順については、「メタデータテーブル設定の削除」を参照してください。

  2. 新しいメタデータテーブル設定を作成します。手順については、「メタデータテーブル設定の作成」を参照してください。

設定の移行に関するサポートが必要な場合は、AWS サポート にお問い合わせください。

新しいメタデータ設定を作成すると、2 つのジャーナルテーブルが作成されます。古いジャーナルテーブルが不要になった場合は、削除できます。手順については、「メタデータテーブルの削除」を参照してください。古いジャーナルテーブルを保持し、新しいジャーナルテーブルと結合する場合は、「カスタムメタデータと S3 メタデータテーブルの結合」で 2 つのテーブルを結合する方法の例を参照してください。

移行後、以下を実行できます。

  1. 設定を表示するには、GetBucketMetadataConfiguration API オペレーションを使用できるようになりました。設定が古いか新しいかを判断するには、GetBucketMetadataConfiguration API レスポンスの次の属性を確認します。AWS マネージドバケットタイプ ("aws") は新しい設定を示し、カスタマーマネージドバケットタイプ ("customer") は古い設定を示します。

    "MetadataTableConfigurationResult": { "TableBucketType": ["aws" | "customer"]

    詳細については、「メタデータテーブル設定の表示」を参照してください。

    注記

    GetBucketMetadataConfiguration および DeleteBucketMetadataConfiguration API オペレーションは、古いメタデータテーブル設定または新しいメタデータテーブル設定で使用できます。ただし、新しい設定で GetBucketMetadataTableConfiguration および DeleteBucketMetadataTableConfiguration API オペレーションを使用しようとすると、HTTP 405 Method Not Allowed エラーが発生します。

    古い API オペレーションの代わりに新しい API オペレーション (CreateBucketMetadataConfigurationGetBucketMetadataConfigurationDeleteBucketMetadataConfiguration) を使用するようにプロセスを更新してください。

  2. Amazon Athena または他の AWS クエリエンジンを使用してメタデータテーブルをクエリする場合は、AWS マネージドテーブルバケットを AWS 分析サービスと統合してください。このリージョンに既存のテーブルバケットを既に統合している場合は、AWS マネージドテーブルバケットも自動的に統合されます。詳細については、「Amazon S3 Tables と AWS 分析サービスの統合」を参照してください。