Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Amazon S3 テーブルの作成

フォーカスモード
Amazon S3 テーブルの作成 - Amazon Simple Storage Service

Amazon S3 テーブルはテーブルバケットのサブリソースです。テーブルは Apache Iceberg 形式で保存されるため、Apache Iceberg をサポートするクエリエンジンやその他のアプリケーションを使用して操作できます。Amazon S3 は、テーブルを継続的に最適化して、ストレージコストを削減し、分析クエリのパフォーマンスを向上させます。

テーブルを作成すると、Amazon S3 はテーブルのウェアハウスの場所を自動的に生成します。ウェアハウスの場所は、テーブルに関連付けられたオブジェクトを読み書きできる一意の S3 の場所です。次の例は、ウェアハウスの場所の形式を示しています。

s3://63a8e430-6e0b-46f5-k833abtwr6s8tmtsycedn8s4yc3xhuse1b--table-s3

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

arn:aws:s3tables:region:owner-account-id:bucket/bucket-name/table/table-id

デフォルトでは、テーブルバケットに最大 10,000 個のテーブルを作成できます。テーブルバケットまたはテーブルのクォータ引き上げをリクエストするには、サポート にお問い合わせください。

テーブルは、Amazon S3 コンソール、Amazon S3 REST API、AWS SDK、AWS Command Line Interface (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 分析サービスと統合していることを確認してください。詳細については、「AWS 分析サービスで Amazon S3 Tables を使用する」を参照してください。

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

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

  3. [テーブルバケット] ページで、テーブルを作成するバケットを選択します。

  4. バケットの詳細ページで、[Athena でテーブルを作成] を選択します。

  5. [Athena でテーブルを作成] ダイアログボックスで、次のいずれかを行います。

    • 新しい名前空間を作成します。[名前空間を作成] を選択し、[名前空間名] フィールドに名前を入力します。名前空間名は 1~255 文字で、テーブルバケット内で一意であることが必要です。有効な文字は a〜z、0〜9、アンダースコア (_) です。名前空間名の先頭にアンダースコアを使用することはできません。

    • [名前空間の作成] を選択します。

    • 既存の名前空間を指定します。[このテーブルバケット内の既存の名前空間を指定] を選択します。次に、[既存の名前空間から選択] または [既存の名前空間名を入力] のいずれかを選択します。バケット内に 1,000 個を超える名前空間がある場合、リストに表示されない名前空間名は手動で入力する必要があります。

  6. [Athena でテーブルを作成] を選択します。

  7. Amazon Athena コンソールが開き、Athena クエリエディタが表示されます。[カタログ] フィールドには、s3tablescatalog/ の後にテーブルバケットの名前が入力されます (s3tablescatalog/amzn-s3-demo-bucket など)。[データベース] フィールドには、以前に作成または選択した名前空間が入力されます。

    注記

    [カタログ] および [データベース] フィールドにこれらの値が表示されない場合は、このリージョンでテーブルバケットを AWS 分析サービスと統合していることを確認してください。詳細については、「AWS 分析サービスで Amazon S3 Tables を使用する」を参照してください。

  8. クエリエディタには、テーブルの作成に使用できるサンプルクエリが入力されます。クエリを変更して、テーブル名とテーブルに必要な列を指定します。

  9. クエリの変更が完了したら、[実行] を選択してテーブルを作成します。

    注記
    • クエリを実行するためのアクセス許可が不足しているという内容のエラーが表示された場合。Athena でクエリを実行しようとしたときに、プリンシパルは指定されたリソースに対する権限を持っていないという内容のエラーが表示される場合は、テーブルに対する必要な Lake Formation 許可が付与されている必要があります。詳細については、「テーブルまたはデータベースに対するアクセス許可の付与」を参照してください。

    • Athena でクエリを実行しようとしたときに、Iceberg はリクエストされたリソースにアクセスできないという内容のエラーが表示される場合は、AWS Lake Formation コンソールに移動し、作成したテーブルバケットカタログとデータベース (名前空間) に対するアクセス許可が自分に付与されていることを確認してください。これらのアクセス許可を付与するときは、テーブルを指定しないでください。詳細については、「テーブルまたはデータベースに対するアクセス許可の付与」を参照してください。

    • Athena で SELECT クエリを実行するときに次のエラーメッセージが表示される場合、このメッセージはテーブル名またはテーブル定義の列名に大文字が含まれていることが原因です。「GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names.」 テーブル名と列名がすべて小文字であることを確認します。

テーブルが作成されると、新しいテーブルの名前が Athena のテーブルのリストに表示されます。Amazon S3 コンソールに戻り、テーブルバケットの詳細ページの [テーブル] リストを更新すると、新しいテーブルが表示されます。

以下の手順では、Amazon S3 コンソールを使用して Amazon Athena でテーブルを作成します。テーブルバケット内に名前空間をまだ作成していない場合は、このプロセスの間に作成できます。

注記

以下の手順を実行する前に、このリージョンでテーブルバケットを AWS 分析サービスと統合していることを確認してください。詳細については、「AWS 分析サービスで Amazon S3 Tables を使用する」を参照してください。

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

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

  3. [テーブルバケット] ページで、テーブルを作成するバケットを選択します。

  4. バケットの詳細ページで、[Athena でテーブルを作成] を選択します。

  5. [Athena でテーブルを作成] ダイアログボックスで、次のいずれかを行います。

    • 新しい名前空間を作成します。[名前空間を作成] を選択し、[名前空間名] フィールドに名前を入力します。名前空間名は 1~255 文字で、テーブルバケット内で一意であることが必要です。有効な文字は a〜z、0〜9、アンダースコア (_) です。名前空間名の先頭にアンダースコアを使用することはできません。

    • [名前空間の作成] を選択します。

    • 既存の名前空間を指定します。[このテーブルバケット内の既存の名前空間を指定] を選択します。次に、[既存の名前空間から選択] または [既存の名前空間名を入力] のいずれかを選択します。バケット内に 1,000 個を超える名前空間がある場合、リストに表示されない名前空間名は手動で入力する必要があります。

  6. [Athena でテーブルを作成] を選択します。

  7. Amazon Athena コンソールが開き、Athena クエリエディタが表示されます。[カタログ] フィールドには、s3tablescatalog/ の後にテーブルバケットの名前が入力されます (s3tablescatalog/amzn-s3-demo-bucket など)。[データベース] フィールドには、以前に作成または選択した名前空間が入力されます。

    注記

    [カタログ] および [データベース] フィールドにこれらの値が表示されない場合は、このリージョンでテーブルバケットを AWS 分析サービスと統合していることを確認してください。詳細については、「AWS 分析サービスで Amazon S3 Tables を使用する」を参照してください。

  8. クエリエディタには、テーブルの作成に使用できるサンプルクエリが入力されます。クエリを変更して、テーブル名とテーブルに必要な列を指定します。

  9. クエリの変更が完了したら、[実行] を選択してテーブルを作成します。

    注記
    • クエリを実行するためのアクセス許可が不足しているという内容のエラーが表示された場合。Athena でクエリを実行しようとしたときに、プリンシパルは指定されたリソースに対する権限を持っていないという内容のエラーが表示される場合は、テーブルに対する必要な Lake Formation 許可が付与されている必要があります。詳細については、「テーブルまたはデータベースに対するアクセス許可の付与」を参照してください。

    • Athena でクエリを実行しようとしたときに、Iceberg はリクエストされたリソースにアクセスできないという内容のエラーが表示される場合は、AWS Lake Formation コンソールに移動し、作成したテーブルバケットカタログとデータベース (名前空間) に対するアクセス許可が自分に付与されていることを確認してください。これらのアクセス許可を付与するときは、テーブルを指定しないでください。詳細については、「テーブルまたはデータベースに対するアクセス許可の付与」を参照してください。

    • Athena で SELECT クエリを実行するときに次のエラーメッセージが表示される場合、このメッセージはテーブル名またはテーブル定義の列名に大文字が含まれていることが原因です。「GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names.」 テーブル名と列名がすべて小文字であることを確認します。

テーブルが作成されると、新しいテーブルの名前が Athena のテーブルのリストに表示されます。Amazon S3 コンソールに戻り、テーブルバケットの詳細ページの [テーブル] リストを更新すると、新しいテーブルが表示されます。

この例では、スキーマを定義したテーブルを作成し、AWS CLI を使用して JSON でテーブルのメタデータを指定する方法を示しています。この例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

aws s3tables create-table --cli-input-json file://mytabledefinition.json

mytabledefinition.json ファイルには、次のテーブル定義の例を使用します。この例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

{ "tableBucketARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket", "namespace": "your_namespace", "name": "example_table", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [ {"name": "id", "type": "int","required": true}, {"name": "name", "type": "string"}, {"name": "value", "type": "int"} ] } } } }

この例では、スキーマを定義したテーブルを作成し、AWS CLI を使用して JSON でテーブルのメタデータを指定する方法を示しています。この例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

aws s3tables create-table --cli-input-json file://mytabledefinition.json

mytabledefinition.json ファイルには、次のテーブル定義の例を使用します。この例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

{ "tableBucketARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket", "namespace": "your_namespace", "name": "example_table", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [ {"name": "id", "type": "int","required": true}, {"name": "name", "type": "string"}, {"name": "value", "type": "int"} ] } } } }

テーブルバケットに接続されたサポートされているクエリエンジンで、例えば Amazon EMR 上の Apache Spark セッションで、テーブルを作成できます。

この例では、CREATE ステートメントを使用して Spark でテーブルを作成した後、INSERT ステートメントを使用してテーブルデータを追加するか、既存のファイルからテーブルデータを追加する方法を示します。この例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

spark.sql( " CREATE TABLE IF NOT EXISTS s3tablesbucket.example_namespace.`example_table` ( id INT, name STRING, value INT ) USING iceberg " )

テーブルを作成した後、テーブルにデータをロードできます。以下の方法から選択します。

  • INSERT ステートメントを使用して、データをテーブルに追加します。

    spark.sql( """ INSERT INTO s3tablesbucket.my_namespace.my_table VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """)
  • 既存のデータファイルを読み込みます。

    1. データを Spark に読み取ります。

      val data_file_location = "Path such as S3 URI to data file" val data_file = spark.read.parquet(data_file_location)
    2. データを Iceberg テーブルに書き込みます。

      data_file.writeTo("s3tablesbucket.my_namespace.my_table").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()

テーブルバケットに接続されたサポートされているクエリエンジンで、例えば Amazon EMR 上の Apache Spark セッションで、テーブルを作成できます。

この例では、CREATE ステートメントを使用して Spark でテーブルを作成した後、INSERT ステートメントを使用してテーブルデータを追加するか、既存のファイルからテーブルデータを追加する方法を示します。この例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

spark.sql( " CREATE TABLE IF NOT EXISTS s3tablesbucket.example_namespace.`example_table` ( id INT, name STRING, value INT ) USING iceberg " )

テーブルを作成した後、テーブルにデータをロードできます。以下の方法から選択します。

  • INSERT ステートメントを使用して、データをテーブルに追加します。

    spark.sql( """ INSERT INTO s3tablesbucket.my_namespace.my_table VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """)
  • 既存のデータファイルを読み込みます。

    1. データを Spark に読み取ります。

      val data_file_location = "Path such as S3 URI to data file" val data_file = spark.read.parquet(data_file_location)
    2. データを Iceberg テーブルに書き込みます。

      data_file.writeTo("s3tablesbucket.my_namespace.my_table").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.