Amazon S3 Tables と AWS 分析サービスの統合
このトピックでは、Amazon S3 のテーブルバケットを AWS 分析サービスと統合するために必要な前提条件と手順について説明します。統合の仕組みの概要については、「S3 Tables の統合の概要」を参照してください。
注記
この統合では、AWS Glue Data Catalog を使用するため、AWS Glue リクエストとストレージのコストが発生する可能性があります。詳細については、AWS Glue の料金
S3 Tables でクエリを実行する場合は、追加料金が適用されます。詳細については、使用しているクエリエンジンの料金情報を参照してください。
統合の前提条件
テーブルバケットを AWS 分析サービスと統合するには、次の前提条件が必要です。
AWS Identity and Access Management (IAM) プリンシパルに次の AWS Glue アクセス許可を追加します。
glue:CreateCatalogは、データカタログにs3tablescatalogフェデレーティッドカタログを作成するために必要ですglue:PassConnectionは、呼び出し元プリンシパルに対し、aws:s3tables接続の作成を Amazon S3 サービスに委任する権限を付与します。
重要
テーブルを作成するときは、テーブル名とテーブル定義にすべて小文字を使用してください。例えば、列名がすべて小文字であることを確認します。テーブル名またはテーブル定義に大文字が含まれている場合、テーブルは AWS Lake Formation または AWS Glue Data Catalog ではサポートされていません。この場合、テーブルバケットが AWS 分析サービスと統合されていても、テーブルは Amazon Athena などの AWS 分析サービスに表示されません。
テーブル定義に大文字が含まれている場合、Athena で SELECT クエリを実行すると、次のエラーメッセージが表示されます。「GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names.」
テーブルバケットと AWS 分析サービスの統合
テーブルバケットは、デフォルトで IAM アクセスコントロールを使用するか、オプションで Lake Formation アクセスコントロールを使用して、データカタログおよび AWS 分析サービスと統合できます。
IAM アクセスコントロールを使用して統合する場合、Amazon S3 テーブルバケットとテーブル、データカタログオブジェクト、および使用しているクエリエンジンにアクセスするには、IAM 権限が必要です。Lake Formation を使用して統合することを選択した場合、IAM アクセスコントロールと Lake Formation 許可の両方がデータカタログリソースへのアクセスを決定します。Lake Formation の統合の詳細については、「AWS Lake Formation デベロッパーガイド」を参照してください。
以下のセクションでは、Amazon S3 マネジメントコンソールまたは AWS CLI を使用して IAM アクセスコントロールとの統合を設定する方法について説明します。
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 左側のナビゲーションペインで、[テーブルバケット] を選択します。
[テーブルバケットを作成] を選択します。
[テーブルバケットを作成] ページが開きます。
テーブルバケット名を入力します。[統合を有効にする] チェックボックスがオンになっていることを確認してください。
[テーブルバケットを作成] を選択します。Amazon S3 は、そのリージョンでテーブルバケットを自動的に統合しようとします。
AWS CLI を使用してテーブルバケットを IAM アクセスコントロールと統合するには
以下の手順は、AWS CLI を使用してテーブルバケットを統合する方法を示しています。これらの手順を使用するには、 を実際の情報に置き換えます。user input placeholders
テーブルバケットを作成します。
aws s3tables create-table-bucket \ --regionus-east-1\ --nameamzn-s3-demo-table-bucket-
次のカタログを含むファイルを
catalog.jsonという名前で作成します。{ "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[ { "Principal": { "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS" }, "Permissions": ["ALL"] } ], "CreateTableDefaultPermissions":[ { "Principal": { "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS" }, "Permissions": ["ALL"] } ], "AllowFullTableExternalDataAccess": "True" } }次のコマンドを使用して
s3tablescatalogカタログを作成します。このカタログを作成すると、テーブルバケット、名前空間、テーブルに対応するオブジェクトが AWS Glue Data Catalog に入力されます。aws glue create-catalog \ --regionus-east-1\ --cli-input-json file://catalog.json 次のコマンドを使用して、
s3tablescatalogカタログが AWS Glue に追加されたことを確認します。aws glue get-catalog --catalog-id s3tablescatalog
AWS 分析サービス統合プロセスは、デフォルトで IAM アクセス許可を使用するように更新されました。既に統合を設定した場合は、現在の統合を引き続き使用できます。ただし、代わりに IAM アクセス許可を使用するように既存の統合を変更する場合は、「AWS Lake Formation デベロッパーガイド」を参照してください。また、AWS Glue Data Catalog と AWS Lake Formation の既存のセットアップを削除して統合をやり直し、統合を再実行することもできます。これにより、既存のすべての Lake Formation 許可と s3tablescatalog への関連するアクセス許可が削除されます。
-
https://console.aws.amazon.com/lakeformation/
で AWS Lake Formation コンソールを開き、データレイク管理者としてサインインします。データレイク管理者の作成方法の詳細については、「AWS Lake Formation デベロッパーガイド」の「データレイク管理者を作成する」を参照してください。 -
以下の手順で
s3tablescatalogカタログを削除します。-
左側のナビゲーションペインで、[カタログ] を選択します。
-
[カタログ] リストで
s3tablescatalogカタログの横にあるオプションボタンを選択します。Actions メニューで、Delete を選択します。
-
-
以下の手順で
s3tablescatalogカタログのデータロケーションの登録を解除します。-
左側のナビゲーションペインで、[管理] セクションに移動し、[データレイクのロケーション] を選択します。
-
s3tablescatalogデータレイクロケーション (s3://tables:など) の横にあるオプションボタンを選択します。region:account-id:bucket/* -
[アクション] メニューで、[削除] を選択します。
-
表示される確認ダイアログボックスで、[削除] を選択します。
-
-
s3tablescatalogカタログとデータレイクロケーションを削除したので、更新された統合プロセスを使用して、テーブルバケットを AWS 分析サービスと統合する手順に従うことができます。
注記
統合された AWS 分析サービスで SSE-KMS によって暗号化されたテーブルを使用する場合は、ユーザーが使用するロールに、暗号化オペレーションで AWS KMS キーを使用するアクセス許可が必要です。詳細については、「統合された AWS 分析サービスにおいて暗号化されたテーブルを使用するアクセス許可を IAM プリンシパルに付与する」を参照してください。