チュートリアル: S3 Tables の開始方法
このチュートリアルでは、テーブルバケットを作成し、リージョンのテーブルバケットを AWS 分析サービスと統合します。次に、AWS CLI またはコンソールを使用して、テーブルバケットに最初の名前空間とテーブルを作成します。その後、Athena を使用してテーブルへのクエリを開始できます。
ヒント
汎用バケットからテーブルバケットに表形式データを移行する場合のために、AWS Solutions Library にはガイド付きソリューションが用意されています。このソリューションは、AWS Step Functions と Amazon EMR を Apache Spark で使用して、AWS Glue Data Catalog に登録され汎用バケットに保存されている Apache Iceberg および Apache Hive テーブルをテーブルバケットに自動的に移動します。詳細については、AWS Solutions Library で「Amazon S3 から S3 Tables への表形式データの移行に関するガイダンス
トピック
ステップ 1: テーブルバケットを作成し、AWS 分析サービスと統合する
このステップでは、Amazon S3 コンソールを使用して最初のテーブルバケットを作成します。テーブルバケットを作成するその他の方法については、「テーブルバケットの作成」を参照してください。
注記
デフォルトでは、Amazon S3 コンソールはテーブルバケットを AWS Glue Data Catalog と自動的に統合します。これにより、AWS 分析サービスが S3 Tables データを自動的に検出してアクセスできるようになります。AWS Command Line Interface (AWS CLI)、AWS SDK、または REST API を使用して最初のテーブルバケットをプログラムで作成する場合は、AWS 分析サービスの統合を手動で完了する必要があります。詳細については、「Amazon S3 Tables と AWS 分析サービスの統合」を参照してください。
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/
を開きます。 ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、テーブルバケットを作成するリージョンを選択します。
左側のナビゲーションペインで、[テーブルバケット] を選択します。
[テーブルバケットを作成] を選択します。
[全般設定] で、テーブルバケットの名前を入力します。
テーブルバケット名には次の条件があります。
現在のリージョンの AWS アカウント内で一意であること。
3~63 文字で指定する。
小文字、数字、ハイフン (
-) のみで構成されていること。文字や数字で始まり、文字や数字で終わります。
テーブルバケットを作成した後、その名前を変更することはできません。テーブルバケットを作成した AWS アカウント がその所有者になります。テーブルバケットの命名の詳細については、「テーブルバケットの命名規則」を参照してください。
-
[AWS 分析サービスとの統合] セクションで、[統合を有効にする] チェックボックスがオンになっていることを確認してください。
コンソールを使用して最初のテーブルバケットを作成するときに [統合を有効にする] が選択されていると、Amazon S3 はテーブルバケットを AWS 分析サービスと統合しようとします。この統合により、AWS 分析サービスを使用して、現在のリージョン内のすべてのテーブルにアクセスできます。詳細については、「Amazon S3 Tables と AWS 分析サービスの統合」を参照してください。
[バケットを作成する] を選択します。
ステップ 2: テーブル名前空間とテーブルを作成する
このステップでは、テーブルバケットに名前空間を作成し、その名前空間の下に新しいテーブルを作成します。テーブル名前空間とテーブルはコンソールまたは AWS CLI を使用して作成できます。
重要
テーブルを作成するときは、テーブル名とテーブル定義にすべて小文字を使用してください。例えば、列名がすべて小文字であることを確認します。テーブル名またはテーブル定義に大文字が含まれている場合、テーブルは 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.」
以下の手順では、Amazon S3 コンソールを使用して、Amazon Athena で名前空間とテーブルを作成します。
テーブル名前空間とテーブルを作成するには
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/
を開きます。 -
左側のナビゲーションペインで、[テーブルバケット] を選択します。
-
[テーブルバケット] ページで、テーブルを作成するテーブルバケットを選択します。
-
テーブルバケットの詳細ページで、[Athena でテーブルを作成] を選択します。
-
[Athena でテーブルを作成] ダイアログボックスで、[名前空間を作成] を選択し、[名前空間名] フィールドに名前を入力します。名前空間名は 1~255 文字で、テーブルバケット内で一意であることが必要です。有効な文字は a〜z、0〜9、アンダースコア (
_) です。名前空間名の先頭にアンダースコアを使用することはできません。 -
[名前空間の作成] を選択します。
-
[Athena でテーブルを作成] を選択します。
-
Amazon Athena コンソールが開き、Athena クエリエディタが表示されます。クエリエディタには、テーブルの作成に使用できるサンプルクエリが入力されます。クエリを変更して、テーブル名とテーブルに必要な列を指定します。
-
クエリの変更が完了したら、[実行] を選択してテーブルを作成します。
テーブルが作成されると、新しいテーブルの名前が Athena のテーブルのリストに表示されます。Amazon S3 コンソールに戻り、テーブルバケットの詳細ページの [テーブル] リストを更新すると、新しいテーブルが表示されます。
テーブルバケットに名前空間を作成し、その名前空間の下にスキーマを定義した新しいテーブルを作成するには、次の AWS CLI コマンド例で の値を実際の値に置き換えます。user input
placeholder
前提条件
-
AmazonS3TablesFullAccessポリシーを IAM ID にアタッチします。 -
AWS CLI バージョン 2.23.10 以上をインストールします。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI の最新バージョンのインストールまたは更新」を参照してください。
次のコマンドを実行して、テーブルバケットに新しい名前空間を作成します。
aws s3tables create-namespace \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket\ --namespacemy_namespace次のコマンドを実行して、名前空間が正常に作成されたことを確認します。
aws s3tables list-namespaces \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
次のコマンドを実行して、テーブルスキーマを定義した新しいテーブルを作成します。
aws s3tables create-table --cli-input-json file://mytabledefinition.jsonmytabledefinition.jsonファイルには、次のテーブル定義の例を使用します。{ "tableBucketARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket", "namespace": "my_namespace", "name": "my_table", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [{"name": "id", "type": "int","required": true}, {"name": "name", "type": "string"}, {"name": "value", "type": "int"}] } } } }
ステップ 3: Athena で SQL を使用してデータをクエリする
Athena で SQL を使用してテーブルをクエリできます。Athena は S3 Tables に対するデータ定義言語 (DDL)、データ操作言語 (DML)、データクエリ言語 (DQL) クエリをサポートしています。
Athena クエリには、Amazon S3 コンソールまたは Amazon Athena コンソールからアクセスできます。
以下の手順では、Amazon S3 コンソールを使用して Athena クエリエディタにアクセスし、Amazon Athena でテーブルに対してクエリを実行できるようにします。
テーブルに対してクエリを実行するには
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/
を開きます。 -
左側のナビゲーションペインで、[テーブルバケット] を選択します。
-
[テーブルバケット] ページで、クエリを実行するテーブルを含むテーブルバケットを選択します。
-
テーブルバケットの詳細ページで、クエリを実行するテーブルの名前の横にあるオプションボタンを選択します。
-
[Athena でテーブルに対してクエリを実行] を選択します。
-
Amazon Athena コンソールが開き、サンプル
SELECTクエリがロードされた状態で Athena クエリエディタが表示されます。必要に応じて、このクエリをユースケースに合わせて変更します。 -
クエリを実行するには、[Run] (実行) を選択します。
テーブルに対してクエリを実行するには
https://console.aws.amazon.com/athena/
で Athena コンソールを開きます。 -
テーブルに対してクエリを実行します。以下は、変更できるサンプルクエリです。
をユーザー自身の情報に必ず置き換えます。user input placeholdersSELECT * FROM "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" LIMIT 10 -
クエリを実行するには、[Run] (実行) を選択します。