メタデータを S3 Tables にエクスポートする (プレビュー)
注記
カタログメタデータのエクスポートは、プレビュー機能として提供されています。本機能は、一般提供前に変更される場合があります。
概要
AWS Glue Data Catalog メタデータは、Amazon S3 Tables に保存されているマネージドカタログシステムテーブルにエクスポートできます。S3 Tables のエクスポートを有効にすると、技術メタデータとビジネスメタデータが AWS マネージド aws-catalog テーブルバケットの読み取り専用 Apache Iceberg テーブルに保存されて、Amazon Redshift や Amazon EMR といった AWS 分析サービスで、SQL を使用してクエリできるようになります。
aws-catalog テーブルバケット内では、システムテーブルは次の名前空間の中に保存されます。
glue–tablesとtable_columnsを含む。catalog_metadata—glossaries、glossary_terms、associated_glossary_terms、attachments、item_attachmentsを含む。
現在、次のシステムテーブルがサポートされています。
| システムテーブル | Contains |
|---|---|
|
データカタログ内の各テーブルの技術メタデータとビジネスメタデータ (名前、データベース、内容、格納場所、形式など)。 |
|
各カタログテーブルの列 (列の名前、データ型、内容、パーティションキーかどうかなど)。 |
|
カタログ内のビジネス用語集 (用語集の名前、内容、ステータス)。 |
|
用語集で定義されている用語 (用語の名前、内容、親用語集、ステータスなど)。 |
|
用語集用語とアセットの関連付け (アセット識別子と用語集用語識別子を含む)。 |
|
アセットレベルでアタッチされたカスタムフォームメタデータ (フォームタイプ、添付ファイルの内容など)。 |
|
個々の列などアセット内の項目にアタッチされたカスタムフォームメタデータ (反復可能なフォーム名、項目名、フォームタイプ、添付コンテンツなど)。 |
各テーブルの完全な列レベルのスキーマについては「カタログシステムテーブルのリファレンス」を参照してください。
カタログメタデータのエクスポートの仕組み
エクスポートを有効にすると、データカタログは既存のカタログメタデータのバックフィルを 1 回だけ実行します。その後、システムテーブルは変更を加えるたびに最新状態に保たれます。新たに書き込まれたり更新されたりしたメタデータは、通常 5 分程度でシステムテーブルに反映されます。
システムテーブルは、aws-catalog テーブルバケット内の glue と catalog_metadata の名前空間に保存されます。特定のシステムテーブルは、その種のメタデータがお使いのカタログに初めて保存されたときに表示されます。例えば、エクスポートを有効にし、お使いのカタログに含まれているのがテーブルとデータベースのみだった場合、そのテーブルに関連するシステムテーブルのみが表示されます。用語集のシステムテーブルは、最初の用語集を作成した後に表示されます。
AWS CLI を使用してカタログメタデータのエクスポートを有効にする
カタログメタデータのエクスポートは、アカウントレベルの設定となります。AWS CLI を使って有効または無効にできます。
前提条件
使用する IAM ID には、エクスポート設定のオペレーションである glue:PutDataCatalogExportConfiguration、glue:GetDataCatalogExportConfiguration、ならびに s3tables:CreateTable を呼び出すアクセス許可が必要になります。S3 Tables のアクセス許可の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 テーブルの作成」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:PutDataCatalogExportConfiguration", "glue:GetDataCatalogExportConfiguration" ], "Resource": "*" } ] }
データカタログメタデータを含む S3 Tables 内のすべてのデータは、デフォルトで SSE-S3 暗号化により暗号化されます。カタログエクスポートを AWS KMS キー (SSE-KMS) を使って暗号化することを選択できます。AWS KMS キーで暗号化する場合は、次の手順を実行して追加のアクセス許可を取得する必要があります。
データカタログエクスポートサービスプリンシパルと S3 Tables メンテナンスサービスプリンシパルに、KMS キー (キーポリシー) を使用するアクセス許可を付与します。
エクスポートを実行する IAM プリンシパルに、KMS キー (ID ポリシー) を使用するためのアクセス許可を付与します。
データカタログエクスポートサービスプリンシパルと S3 Tables メンテナンスサービスプリンシパルに KMS キー (キーポリシー) を使用するアクセス許可を付与
AWS Glue に、暗号化されたカタログメタデータのエクスポートを許可し、エクスポートされたテーブルで、圧縮や、参照されていないファイルの削除といった自動テーブルメンテナンスを許可するときは、次のサービスプリンシパルに KMS キーへのアクセスを許可する必要があります。
systemtables.catalog.amazonaws.com— 暗号化されたカタログメタデータを S3 Tables にエクスポートします。maintenance.s3tables.amazonaws.com— エクスポートされたテーブルで自動テーブルメンテナンスを実行します。
AWS Glue は、aws-catalog という名前の AWS マネージドテーブルバケットに書き込みします。S3 Tables エクスポートの暗号化に使用する KMS キーは、保管中のデータカタログの暗号化に使用するものと同じである必要はありません。AWS Glue は対称の KMS キーのみをサポートしています。これらのサービスプリンシパルにアクセス権を付与するときは、次のキーポリシーの例を使用できます。このポリシーでは、maintenance.s3tables.amazonaws.com サービスプリンシパルに対して、aws-catalog テーブルバケット内のテーブルを暗号化および復号するための、特定の KMS キーを使用するアクセス許可が付与されます。S3 Tables メンテナンスサービスプリンシパルの詳細については「Amazon Simple Storage Service ユーザーガイド」の「S3 Tables の SSE-KMS 暗号化のアクセス許可要件」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSystemTablesDescribeKey", "Effect": "Allow", "Principal": { "Service": "systemtables.catalog.amazonaws.com" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "AllowSystemTablesEncryptDecrypt", "Effect": "Allow", "Principal": { "Service": "systemtables.catalog.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3tables:us-east-1:123456789012:bucket/aws-catalog/table/*", "kms:ViaService": "s3.us-east-1.amazonaws.com" } } }, { "Sid": "AllowS3TablesMaintenanceEncryptDecrypt", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3tables:us-east-1:123456789012:bucket/aws-catalog/*" } } } ] }
エクスポートを行うプリンシパルに必要な IAM アクセス許可
エクスポートを実行するプリンシパルに次のアクセス許可を付与します。次のポリシーは、glue_catalog_id 暗号化コンテキスト (値はユーザーの catalogId) により範囲指定された特定の AWS Glue Data Catalog を復号するためのアクセス権を IAM プリンシパルに付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeKey", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "AllowExportOfGlueDataCatalogByCatalogId", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "kms:EncryptionContext:glue_catalog_id": "123456789012" } } } ] }
カタログメタデータのエクスポートを有効にするには
-
次のコマンドを実行してエクスポートを有効にします。
aws glue put-data-catalog-export-configuration \ --export-setting ENABLED -
次のコマンドを実行して設定を確定します。
aws glue get-data-catalog-export-configurationレスポンスの例:
{ "ExportSetting": "ENABLED", "Status": "ENABLED", "S3TableBucketArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-catalog" }最初のバックフィルが進行すると、
StatusフィールドがENABLINGからENABLEDに移行します。
カタログメタデータのエクスポートを無効にするには
次のコマンドを実行します。
aws glue put-data-catalog-export-configuration \ --export-setting DISABLED
カタログシステムテーブルのリファレンス
すべてのシステムテーブルは、aws-catalog テーブルバケット内の glue と catalog_metadata の名前空間に保存されます。すべてのテーブルに次のシステム列が含まれています。
| 列 | 型 | 説明 |
|---|---|---|
|
timestamp |
レコードがシステムテーブルに取り込まれた時刻 (UTC)。 |
|
string |
テーブルのスキーマバージョン識別子。 |
テーブル
カタログテーブルにつき 1 行ずつ含まれます。
| 列 | 型 | 説明 |
|---|---|---|
| string | テーブルの一意の識別子 |
| string | カタログ識別子 |
| string | カタログ名 |
| timestamp | 最終更新時のタイムスタンプ |
| timestamp | 作成時のタイムスタンプ |
| string | テーブルを作成したプリンシパルの識別子 |
| string | 作成プリンシパルのタイプ |
| string | テーブルの説明 |
| string | テーブル名。 |
| string | テーブルの名前空間 |
| string | AWS リージョン |
| map<string, string> | リソースタグ |
| string | アセットタイプ |
| string | テーブルを最後に更新したプリンシパルの識別子 |
| string | 更新プリンシパルのタイプ |
| string | このテーブルが含まれているデータベース |
| string | 入力形式のクラス |
| string | AWS Lake Formation 登録ステータス |
| string | 出力形式のクラス |
| string | テーブルの所有者。 |
| int | 保持期間 |
| string | シリアル化/逆シリアル化ライブラリ |
| string | データ形式 |
| string | データ場所の URI |
| string | テーブル形式 (Iceberg、Hudi など) |
| string | テーブルタイプ |
table_columns
カタログテーブルの列ごとに 1 行含まれます。
| 列 | 型 | 説明 |
|---|---|---|
| string |
|
| string | 親テーブルの識別子 |
| string | 列名。 |
| string | 列の説明 |
| string | 列のデータタイプ |
| boolean | 列がパーティションキーであるかどうかを示す |
attachments
アセットレベルのカスタムフォームアタッチメントが含まれます (アセットのアタッチメントごとに 1 行)。
| 列 | 型 | 説明 |
|---|---|---|
| string | 親アセットの識別子 |
| string | アタッチメント名 |
| string | コンテンツの登録済みフォームタイプ |
| string | JSON エンコードされた文字列としてのアタッチメントコンテンツ |
item_attachments
個々の列など反復可能なフォーム内の項目に対するアタッチメントが含まれます。
| 列 | 型 | 説明 |
|---|---|---|
| string | 親アセットの識別子 |
| string | 反復可能なフォームの名前 (列など)。 |
| string | 項目の名前 (列名など) |
| string | アタッチメント名 |
| string | コンテンツの登録済みフォームタイプ |
| string | JSON エンコードされた文字列としてのアタッチメントコンテンツ |
用語集
用語集ごとに 1 行含まれます。
| 列 | 型 | 説明 |
|---|---|---|
| string | 用語集の一意の識別子 |
| string | 用語集の説明。 |
| string | 用語集の名前 |
| string | ステータス ( |
glossary_terms
用語ごとに 1 行含まれます。
| 列 | 型 | 説明 |
|---|---|---|
| string | 一意の用語識別子 |
| string | 親用語集の識別子。 |
| string | 詳細な用語の説明。 |
| string | 用語の名前 |
| string | 簡単な用語の説明。 |
| string | ステータス ( |
associated_glossary_terms
用語集用語とアセット間の関連付けごとに 1 行含まれます。
| 列 | 型 | 説明 |
|---|---|---|
| string | 用語集の用語に関連付けられているアセットの識別子 |
| string | アセットに関連付けられている用語集の用語の識別子。 |
カタログシステムのテーブルへのクエリ
S3 Tables にエクスポートされたカタログメタデータを、Amazon EMR などの AWS 分析サービスを使用してクエリするときは、事前に AWS マネージド aws-catalog テーブルバケットで分析統合を有効にし、AWS Lake Formation アクセス許可を設定する必要があります。
前提条件
カタログメタデータのエクスポートが有効になっており、ステータスが
ENABLEDになっている分析サービスを利用できる
エクスポートを有効にしてから 5 分以上が経過し、データが利用可能になっている
インテグレーションの概要
S3 Tables と AWS 分析サービスとの統合の詳細 (前提条件、IAM ロール設定、ステップバイステップの手順ほか) については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 Tables と AWS 分析サービスの統合」を参照してください。
S3 Tables のエクスポートを有効にして分析統合を設定すると、Amazon Redshift、Amazon EMR などの AWS 分析サービスを使用してデータカタログのメタデータをクエリできるようになります。これで、標準 SQL を使用してメタデータの監査と分析を実行できます。
クエリの例
すべてのカタログテーブルをデータベースおよび形式とともに一覧表示する
SELECT id, name, database_name, table_format FROM aws_catalog.glue.tables;
特定のテーブルの説明を含む列を検索する
SELECT column_name, type, description FROM aws_catalog.glue.table_columns WHERE asset_id = 'table-id';
用語集の用語を親用語集に結合する
SELECT g.name AS glossary_name, t.name AS term_name, t.short_description FROM aws_catalog.catalog_metadata.glossary_terms t JOIN aws_catalog.catalog_metadata.glossaries g ON t.glossary_id = g.id WHERE g.status = 'ENABLED';
特定の用語集の用語に関連付けられたテーブルを検索する
SELECT t.name, t.database_name, gt.name AS term_name FROM aws_catalog.glue.tables t JOIN aws_catalog.catalog_metadata.associated_glossary_terms agt ON agt.asset_id = t.id JOIN aws_catalog.catalog_metadata.glossary_terms gt ON gt.id = agt.glossary_term_id WHERE gt.name = 'term-name';
カスタムフォームアタッチメントからフィールドを抽出する
SELECT asset_id, attachment_name, json_extract_scalar(content_json, '$.owner') AS data_owner FROM aws_catalog.catalog_metadata.attachments WHERE form_type_id = 'your-form-type-id';