AWS マネージドテーブルバケットの使用 - Amazon Simple Storage Service

AWS マネージドテーブルバケットの使用

AWS マネージドテーブルバケットは、S3 メタデータによるデータ検出の高速化 ジャーナルテーブルやライブインベントリテーブルなどの AWS マネージドテーブルを保存するように設計された特殊な S3 テーブルバケットです。直接作成して管理するカスタマー管理のテーブルバケットとは異なり、AWS マネージドテーブルバケットは、AWS マネージドテーブルを必要とする機能を設定すると、AWS により自動的にプロビジョニングされます。マネージドテーブルが作成されると、変更できないソースバケットに基づいて事前定義された名前空間に属します。各 AWS アカウントには、命名規則 aws-s3 に従って、リージョンごとに 1 つの AWS マネージドテーブルバケットがあります。このバケットは、そのリージョンのアカウントのリソースに関連付けられたすべてのマネージドテーブルの一元的な場所として機能します。

次の表は、AWS マネージドテーブルバケットとカスタマーマネージドテーブルバケットを比較したものです。

機能 AWS マネージドテーブルバケット カスタマーマネージドテーブルバケット
作成 AWS のサービスによって自動的に作成される これらを手動で作成する
命名 標準の命名規則を使用する (aws-s3) 独自の名前を定義する
テーブルの作成 AWS のサービスのみがテーブルを作成できる ユーザーはテーブルを作成できる
名前空間コントロール 名前空間を作成または削除することはできない (すべてのテーブルは固定名前空間に属します) ユーザーは名前空間を作成および削除できる
アクセス 読み取り専用アクセス フル アクセス
Encryption デフォルトの暗号化 (SSE-S3) 設定を変更できるのは、カスタマーマネージド AWS KMS キーで最初のテーブルを暗号化した場合のみ バケットレベルのデフォルトの暗号化を設定し、いつでも変更できる
メンテナンス AWS のサービスにより管理される 自動メンテナンスはバケットレベルでカスタマイズできる

AWS マネージドテーブルバケットを作成するアクセス許可

AWS マネージドテーブルバケットを使用するには、AWS マネージドテーブルバケットとテーブルを作成し、AWS マネージドテーブルの暗号化設定と、テーブルをクエリするための基本的な読み取りアクセス許可を指定するためのアクセス許可が必要です。

以下は、サービス設定を通じて AWS マネージドテーブルバケットを作成できるようにするポリシーの例です。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToWorkWithMetadataTables", "Effect":"Allow", "Action":[ "s3:CreateBucketMetadataTableConfiguration", "s3tables:CreateTableBucket", "s3tables:CreateNamespace", "s3tables:CreateTable", "s3tables:GetTable", "s3tables:PutTablePolicy" "s3tables:PutTableEncryption", "kms:DescribeKey" ], "Resource":[ "arn:aws:s3:::bucket/amzn-s3-demo-source-bucket", "arn:aws:s3tables:region:111122223333:bucket/aws-s3", "arn:aws:s3tables:region:111122223333:bucket/aws-s3/table/*" ] } ] }

以下は、AWS マネージドテーブルバケット内のテーブルをクエリできるようにするポリシーの例です。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToWorkWithMetadataTables", "Effect":"Allow", "Action":[ "s3tables:GetTable", "s3tables:GetTableData", "s3tables:GetTableMetadataLocation", "kms:Decrypt" ], "Resource":[ "arn:aws:s3tables:region:111122223333:bucket/aws-s3", "arn:aws:s3tables:region:111122223333:bucket/aws-s3/table/*" ] } ] }

AWS マネージドテーブルバケットのテーブルのクエリ

S3 Tables でサポートされているアクセス方法とエンジンを使用して、AWS マネージドテーブルバケット内の AWS マネージドテーブルをクエリできます。次にクエリの例を示します。

Using standard SQL

次の例は、標準の SQL 構文を使用して AWS マネージドテーブルをクエリする方法を示しています。

SELECT * FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" LIMIT 10;

次の例は、AWS マネージドテーブルを独自のテーブルに結合する方法を示しています。

SELECT * FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" a JOIN "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" b ON a.key = b.key LIMIT 10;
Using Spark

次のコード例は、Spark でテーブルをクエリする方法を示しています。

spark.sql(""" SELECT * FROM ice_catalog.inventory a JOIN ice_catalog.my_table b ON a.key = b.key """).show(10, true)

次の例は、AWS マネージドテーブルを別のテーブルに結合する方法を示しています。

SELECT * FROM inventory a JOIN my_table b ON a.key = b.key LIMIT 10;

AWS マネージドテーブルバケットの暗号化

デフォルトでは、AWS マネージドテーブルバケットは、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用して暗号化されます。AWS マネージドテーブルバケットが作成された後、PutTableBucketEncryption を使用して、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用するようにバケットのデフォルトの暗号化設定を設定できます。

AWS マネージドテーブルの作成中に、SSE-KMS で暗号化することを選択できます。SSE-KMS を使用する場合は、AWS マネージドテーブルバケットと同じリージョンにカスタマーマネージド KMS キーを指定する必要があります。AWS マネージドテーブルの暗号化タイプは、テーブルの作成中にのみ設定できます。AWS マネージドテーブルの作成後は、暗号化設定を変更することはできません。

AWS マネージドテーブルバケットとそこに保存されているテーブルで同じ KMS キーを使用する場合は、テーブルの暗号化に使用したのと同じ KMS キーを使用して、作成後にテーブルバケットを暗号化してください。SSE-KMS を使用するようにテーブルバケットのデフォルトの暗号化設定を変更すると、それらの暗号化設定はそれ以後バケットに作成されるテーブルに使用されます。