

# Amazon S3 Tables と AWS 分析サービスの統合
<a name="s3-tables-integrating-aws"></a>

このトピックでは、Amazon S3 のテーブルバケットを AWS 分析サービスと統合するために必要な前提条件と手順について説明します。統合の仕組みの概要については、「[S3 Tables の統合の概要](s3-tables-integration-overview.md)」を参照してください。

**注記**  
この統合では、AWS Glue Data Catalog を使用するため、AWS Glue リクエストとストレージのコストが発生する可能性があります。詳細については、[AWS Glue の料金](https://aws.amazon.com/glue/pricing/)を参照してください。  
S3 Tables でクエリを実行する場合は、追加料金が適用されます。詳細については、使用しているクエリエンジンの料金情報を参照してください。

## 統合の前提条件
<a name="table-integration-prerequisites"></a>

テーブルバケットを AWS 分析サービスと統合するには、次の前提条件が必要です。
+ [テーブルバケットを作成します。](s3-tables-buckets-create.md)
+ AWS Identity and Access Management (IAM) プリンシパルに次の AWS Glue アクセス許可を追加します。
  + `glue:CreateCatalog` は、データカタログに `s3tablescatalog` フェデレーティッドカタログを作成するために必要です
  + `glue:PassConnection` は、呼び出し元プリンシパルに対し、`aws:s3tables` 接続の作成を Amazon S3 サービスに委任する権限を付与します。
+ [ () を最新バージョンに更新します。AWS Command Line InterfaceAWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions)

**重要**  
テーブルを作成するときは、テーブル名とテーブル定義にすべて小文字を使用してください。例えば、列名がすべて小文字であることを確認します。テーブル名またはテーブル定義に大文字が含まれている場合、テーブルは 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 分析サービスの統合
<a name="table-integration-procedures"></a>

テーブルバケットは、デフォルトで IAM アクセスコントロールを使用するか、オプションで Lake Formation アクセスコントロールを使用して、データカタログおよび AWS 分析サービスと統合できます。

IAM アクセスコントロールを使用して統合する場合、Amazon S3 テーブルバケットとテーブル、データカタログオブジェクト、および使用しているクエリエンジンにアクセスするには、IAM 権限が必要です。Lake Formation を使用して統合することを選択した場合、IAM アクセスコントロールと Lake Formation 許可の両方がデータカタログリソースへのアクセスを決定します。Lake Formation の統合の詳細については、「[*AWS Lake Formation デベロッパーガイド*](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html)」を参照してください。

以下のセクションでは、Amazon S3 マネジメントコンソールまたは AWS CLI を使用して IAM アクセスコントロールとの統合を設定する方法について説明します。

### S3 コンソールの使用
<a name="integrate-console"></a>

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

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

1. **[テーブルバケットを作成]** を選択します。

   **[テーブルバケットを作成]** ページが開きます。

1. **テーブルバケット名**を入力します。**[統合を有効にする]** チェックボックスがオンになっていることを確認してください。

1. **[テーブルバケットを作成]** を選択します。Amazon S3 は、そのリージョンでテーブルバケットを自動的に統合しようとします。

### の使用AWS CLI
<a name="integrate-cli"></a>

**AWS CLI を使用してテーブルバケットを IAM アクセスコントロールと統合するには**

以下の手順は、AWS CLI を使用してテーブルバケットを統合する方法を示しています。これらの手順を使用するには、`{{user input placeholders}}` を実際の情報に置き換えます。

1. テーブルバケットを作成します。

   ```
   aws s3tables create-table-bucket \
   --region {{us-east-1}} \
   --name {{amzn-s3-demo-table-bucket}}
   ```

1. 次のカタログを含むファイルを `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 \
   --region {{us-east-1}} \
   --cli-input-json file://{{catalog.json}}
   ```

1. 次のコマンドを使用して、`s3tablescatalog` カタログが AWS Glue に追加されたことを確認します。

   ```
   aws glue get-catalog --catalog-id s3tablescatalog
   ```

### 更新された統合プロセスへの移行
<a name="migrate-integrate-console"></a>

AWS 分析サービス統合プロセスは、デフォルトで IAM アクセス許可を使用するように更新されました。既に統合を設定した場合は、現在の統合を引き続き使用できます。ただし、代わりに IAM アクセス許可を使用するように既存の統合を変更する場合は、「[*AWS Lake Formation デベロッパーガイド*](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html)」を参照してください。また、AWS Glue Data Catalog と AWS Lake Formation の既存のセットアップを削除して統合をやり直し、統合を再実行することもできます。これにより、既存のすべての Lake Formation 許可と `s3tablescatalog` への関連するアクセス許可が削除されます。

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開き、データレイク管理者としてサインインします。データレイク管理者の作成方法の詳細については、「*AWS Lake Formation デベロッパーガイド*」の「[データレイク管理者を作成する](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)」を参照してください。

1. 以下の手順で `s3tablescatalog` カタログを削除します。
   + 左側のナビゲーションペインで、**[カタログ]** を選択します。
   + **[カタログ]** リストで `s3tablescatalog` カタログの横にあるオプションボタンを選択します。**Actions** メニューで、**Delete** を選択します。

1. 以下の手順で `s3tablescatalog` カタログのデータロケーションの登録を解除します。
   + 左側のナビゲーションペインで、**[管理]** セクションに移動し、**[データレイクのロケーション]** を選択します。
   + `s3tablescatalog` データレイクロケーション (`s3://tables:{{region}}:{{account-id}}:bucket/*` など) の横にあるオプションボタンを選択します。
   + **[アクション]** メニューで、**[削除]** を選択します。
   + 表示される確認ダイアログボックスで、**[削除]** を選択します。

1. `s3tablescatalog` カタログとデータレイクロケーションを削除したので、更新された統合プロセスを使用して、[テーブルバケットを AWS 分析サービスと統合する](#table-integration-procedures)手順に従うことができます。

**注記**  
統合された AWS 分析サービスで SSE-KMS によって暗号化されたテーブルを使用する場合は、ユーザーが使用するロールに、暗号化オペレーションで AWS KMS キーを使用するアクセス許可が必要です。詳細については、「[統合された AWS 分析サービスにおいて暗号化されたテーブルを使用するアクセス許可を IAM プリンシパルに付与する](s3-tables-kms-permissions.md#tables-kms-integration-permissions)」を参照してください。

**次のステップ**
+ [名前空間を作成します。](s3-tables-namespace-create.md).
+ [テーブルを作成する](s3-tables-create.md).