

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon S3 Tables と AWS Glue Data Catalog および の統合 AWS Lake Formation
<a name="create-s3-tables-catalog"></a>

[Amazon S3 Tables](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables.html) は、分析ワークロードに特別に最適化された S3 ストレージを提供し、クエリのパフォーマンスを向上させながらコストを削減します。S3 Tables のデータは、新しいバケットタイプ、つまりテーブルをサブリソースとして保存する*テーブルバケット*に保存されます。S3 テーブルには Apache Iceberg 標準のサポートが組み込まれているため、Apache Spark などの一般的なクエリエンジンを使用して、Amazon S3 テーブルバケット内の表形式データに対して簡単にクエリを実行できます。

Amazon S3 Tables は、IAM アクセスコントロールまたは IAM および Lake Formation 許可 AWS Glue Data Catalog を使用して と統合できます。
+ **IAM アクセスコントロール**: IAM ポリシーを使用して S3 テーブルとデータカタログへのアクセスを制御します。このアクセスコントロールアプローチでは、リソースにアクセスするには、S3 Tables リソースと Data Catalog オブジェクトの両方に対する IAM アクセス許可が必要です。
+ **Lake Formation アクセスコントロール**: データカタログを介して S3 テーブルへのアクセスを制御するために AWS Glue 、IAM アクセス許可に加えて AWS Lake Formation 許可を使用します。このモードでは、プリンシパルは Data Catalog を操作するための IAM アクセス許可を必要とし、Lake Formation 許可によってプリンシパルがアクセスできるカタログリソース (データベース、テーブル、列、行) が決まります。このモードは、粗粒度のアクセスコントロール (データベースレベルとテーブルレベルの権限) ときめ細かなアクセスコントロール (列レベルと行レベルのセキュリティ) の両方をサポートします。登録されたロールが設定され、認証情報供給が有効になっている場合、Lake Formation は登録されたロールを使用してプリンシパルに代わって認証情報を提供するため、プリンシパルに S3 Tables IAM アクセス許可は必要ありません。Lake Formation アクセスコントロールは、サードパーティーの分析エンジンの認証情報供給もサポートしています。

このセクションでは、以下のシナリオ AWS Lake Formation で との統合を設定するためのガイダンスを提供します。
+ **シナリオ A**: IAM アクセスコントロールを使用して S3 Tables と Data Catalog を統合し、今後は を使用する予定です AWS Lake Formation。詳細については、「[S3 Tables 統合のアクセスコントロールの変更](manage-s3tables-catalog-integration.md)」を参照してください。
+ **シナリオ B**: を使用して S3 テーブルとデータカタログを統合する予定 AWS Lake Formation で、現在アカウントとリージョンに統合されていません。[Amazon S3 テーブルカタログを データカタログおよび Lake Formation と統合するための前提条件](s3tables-catalog-prerequisites.md) セクションから開始し、 に従います[Amazon S3 Tables 統合の有効化](enable-s3-tables-catalog-integration.md)。
+ **シナリオ C**: を使用して S3 テーブルとデータカタログを統合し AWS Lake Formation 、IAM を使用する予定です。詳細については、「[S3 Tables 統合のアクセスコントロールの変更](manage-s3tables-catalog-integration.md)」を参照してください。

[S3 Tables を AWS 分析サービスと統合する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)の手順に従って、 AWS Glue Data Catalog とテーブルリソースにアクセスし、 AWS 分析サービスと連携するための適切なアクセス許可があることを確認してください。

**Topics**
+ [データカタログと Lake Formation の統合の仕組み](#w2aac13c27c19)
+ [Amazon S3 テーブルカタログを データカタログおよび Lake Formation と統合するための前提条件](s3tables-catalog-prerequisites.md)
+ [Amazon S3 Tables 統合の有効化](enable-s3-tables-catalog-integration.md)
+ [S3 テーブルカタログでのデータベースとテーブルの作成](create-databases-tables-s3-catalog.md)
+ [別の AWS アカウントに Amazon S3 テーブルバケットを登録する](register-cross-account-s3-table-bucket.md)
+ [アクセス許可の付与](s3-tables-grant-permissions.md)

## データカタログと Lake Formation の統合の仕組み
<a name="w2aac13c27c19"></a>

S3 テーブルカタログを データカタログおよび Lake Formation と統合すると、 AWS Glue サービスは AWS リージョンに固有のアカウントのデフォルトデータカタログに `s3tablescatalog` という名前の単一のフェデレーティッドカタログを作成します。統合では、アカウントとフェデレーティッドカタログ内のすべての Amazon S3 テーブルバケットリソース AWS リージョン を次の方法でマッピングします。
+ Amazon S3 テーブルバケットは、データカタログ内のマルチレベルカタログになります。
+ 関連付けられた Amazon S3 名前空間は、データカタログにデータベースとして登録されます。
+ テーブルバケット内の Amazon S3 Tables は、データカタログ内のテーブルになります。

![\[S3 Tables と 間のオブジェクトのマッピング AWS Glue Data Catalog。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/S3Tables-glue-catalog.png)


 Lake Formation と統合した後、テーブルバケットカタログに Apache Iceberg テーブルを作成し、 Amazon Athena Amazon EMR やサードパーティー AWS の分析エンジンなどの統合分析エンジンを介してそれらにアクセスできます。

統合で Lake Formation も有効にすると、きめ細かなアクセスコントロールが可能になります AWS Lake Formation。このセキュリティアプローチは、 (IAM) アクセス許可に加えて AWS Identity and Access Management 、テーブルを操作する前に、テーブルに対する Lake Formation アクセス許可を IAM プリンシパルに付与する必要があることを意味します。

 AWS Lake Formationには、2 つの主な許可タイプがあります。
+ メタデータに対するアクセス許可は、データカタログ内でメタデータデータベースとテーブルを作成、読み取り、更新、削除できるかどうかを制御します。
+ 基になるデータに対するアクセス許可は、データカタログリソースの参照先となる Amazon S3 の場所にデータを読み書きできるかどうかを制御します。

Lake Formation では、独自のアクセス許可モデルと IAM アクセス許可モデルを組み合わせて使用して、データカタログリソースと基になるデータへのアクセスを制御します。
+ データカタログリソースまたは基になるデータへのアクセスリクエストが成功するには、そのリクエストが IAM と Lake Formation の両方によるアクセス許可のチェックに合格する必要があります。
+ IAM アクセス許可は Lake Formation および AWS Glue APIsとリソースへのアクセスを制御し、Lake Formation アクセス許可は Data Catalog リソース、Amazon S3 ロケーション、および基盤となるデータへのアクセスを制御します。

Lake Formation 許可は付与されたリージョン内でのみ適用されます。プリンシパルが Lake Formation 許可を付与されるには、データレイク管理者または必要なアクセス許可を持つ別のプリンシパルによって認可される必要があります。

# Amazon S3 テーブルカタログを データカタログおよび Lake Formation と統合するための前提条件
<a name="s3tables-catalog-prerequisites"></a>

以下は、Amazon S3 テーブルと AWS Glue Data Catalog および の統合を有効にするための前提条件です AWS Lake Formation。

1.  Amazon S3 Tables の統合を有効にすると、Lake Formation は S3 テーブルの場所を自動的に登録します。Lake Formation にテーブルバケットの場所を登録するには、`lakeformation:RegisterResource`、`lakeformation:RegisterResourceWithPrivilegedAccess`、および `lakeformation:CreateCatalog` のアクセス許可を持つ IAM ロール/ユーザーが必要です。管理者以外のこれらのアクセス許可を持つユーザーがカタログの場所を登録すると、Lake Formation によってその場所に対する `DATA_LOCATION_ACCESS` アクセス許可が自動的に付与され、呼び出し元のプリンシパルに、登録されたデータの場所でサポートされているすべての Lake Formation オペレーションを実行するアクセス許可が付与されます。

1. <a name="step3-permissions"></a> S3 テーブル統合を有効にする場合は、データアクセスを許可する認証情報を提供する Lake Formation の IAM ロールを選択する必要があります。S3 テーブルバケットへの Lake Formation データアクセス用の IAM ロールを作成します。テーブルバケットを Lake Formation に登録する際に使用する IAM ロールには、次のアクセス許可が必要です。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "LakeFormationPermissionsForS3ListTableBucket",
               "Effect": "Allow",
               "Action": [
                   "s3tables:ListTableBuckets"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket",
               "Effect": "Allow",
               "Action": [
                   "s3tables:CreateTableBucket",
                   "s3tables:GetTableBucket",
                   "s3tables:CreateNamespace",
                   "s3tables:GetNamespace",
                   "s3tables:ListNamespaces",
                   "s3tables:DeleteNamespace",
                   "s3tables:DeleteTableBucket",
                   "s3tables:CreateTable",
                   "s3tables:DeleteTable",
                   "s3tables:GetTable",
                   "s3tables:ListTables",
                   "s3tables:RenameTable",
                   "s3tables:UpdateTableMetadataLocation",
                   "s3tables:GetTableMetadataLocation",
                   "s3tables:GetTableData",
                   "s3tables:PutTableData"
               ],
               "Resource": [
                   "arn:aws:s3tables:us-east-1:123456789012:bucket/*"
               ]
           }
       ]
   }
   ```

------

   詳細については、「[ロケーションの登録に使用されるロールの要件](registration-role.md)」を参照してください。

1.  Lake Formation サービスでロールを引き受け、統合された分析エンジンに一時的な認証情報を提供できるようにするには、IAM ロールに次の信頼ポリシーを追加します。

   ```
   {
     "Effect": "Allow",
     "Principal": {
       "Service": "lakeformation.amazonaws.com"
     },
     "Action": [
       "sts:AssumeRole",
       "sts:SetSourceIdentity",
       "sts:SetContext"  # add action to trust relationship when using IAM Identity center principals with Lake Formation
     ]
   }
   ```

**注記**  
 AWS 分析サービスの統合プロセスが更新されました。プレビューリリースで統合を設定した場合は、現在の統合を引き続き使用できます。ただし、更新された統合プロセスではパフォーマンスが向上します。統合を更新するには:  
まず、Lake Formation で既存の S3 テーブルカタログを削除します。カタログを削除するには、カタログリストから `s3tablescatalog` カタログを選択し、**[アクション]** から **[削除]** を選択します。
次に、`s3tablescatalog` のデータの場所を登録解除します。  
Lake Formation コンソールの **[管理]** セクションで、**[データの場所]** を選択します。
場所を選択し、**[アクション]** メニューで **[削除]** を選択します。
確認を求めるプロンプトが表示されたら、**[Remove]** (削除) を選択します。  
データロケーションの登録解除の詳細な手順については、[Amazon S3 ロケーションの登録解除](unregister-location.md)「」セクションを参照してください。
次に、[Amazon S3 Tables 統合の有効化](enable-s3-tables-catalog-integration.md)「」セクションの更新された統合ステップに従います。

# Amazon S3 Tables 統合の有効化
<a name="enable-s3-tables-catalog-integration"></a>

Amazon S3 コンソールを使用して Amazon S3 テーブルバケットを作成し、 AWS 分析サービスと統合できます。詳細については、「[Amazon S3 Tables と AWS 分析サービスの統合](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)」を参照してください。

 では AWS Lake Formation、Lake Formation コンソールまたは AWS Lake Formation を使用して、Amazon S3 Tables と AWS Glue Data Catalog および との統合を有効にできます AWS CLI。

## Amazon S3 Tables をデータカタログおよび Lake Formation と統合するには (コンソール)
<a name="w2aac13c27c23b7b1"></a>

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

1. ナビゲーションペインの**[データカタログ]** で、**[カタログ]** を選択します。

1. **[カタログ]** ページで **[S3 テーブル統合を有効にする]** を選択します。  
![\[カタログページの S3 テーブル統合を有効にするオプション。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/enable-s3-table-integration.png)

1.  Lake Formation が分析クエリエンジンに認証情報を提供するために必要なアクセス許可を持つ IAM ロールを選択します。ロールがデータにアクセスするために必要なアクセス許可については、「前提条件」セクションの「[step3-permissions](s3tables-catalog-prerequisites.md#step3-permissions)」を参照してください。  
![\[IAM ロール を含む S3 統合の有効化画面。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/enable-s3-table-catalog.png)

1.  **[外部エンジンに、Amazon S3 の場所のデータに対するフルアクセス許可を付与する]** を選択します。サードパーティーエンジンのフルテーブルアクセスを有効にすると、Lake Formation は IAM セッションタグの検証を実行せずにサードパーティーエンジンに直接認証情報を返します。つまり、アクセスするテーブルに Lake Formation のきめ細かなアクセスコントロールを適用することはできません。

1. **[有効化]** を選択します。S3 Tables の新しいカタログがカタログリストに追加されます。S3 テーブルカタログ統合を有効にすると、サービスは S3 テーブルバケットのデータロの場所を Lake Formation に登録します。

1. カタログを選択してカタログオブジェクトを表示し、他のプリンシパルにアクセス許可を付与します。  
![\[S3 テーブルカタログ\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/s3-table-catalog.png)

   マルチレベルカタログを作成するには、「Amazon Simple Storage Service ユーザーガイド」の[「テーブルバケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html)」セクションを参照してください。

## Amazon S3 Tables をデータカタログおよび Lake Formationと統合するには (CLI)
<a name="w2aac13c27c23b7b3"></a>

前提条件セクションに従って、Lake Formation がテーブルリソースにアクセスできるようにする IAM サービスロールを作成します。

1. 次の信頼ポリシーを含むファイルを `Role-Trust-Policy.json` という名前で作成します。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
         {
           "Sid": "LakeFormationDataAccessPolicy",
           "Effect": "Allow",
           "Principal": {
             "Service": "lakeformation.amazonaws.com"
           },
           "Action": [
               "sts:AssumeRole",
               "sts:SetContext",
               "sts:SetSourceIdentity"
           ],
           "Condition": {
             "StringEquals": {
               "aws:SourceAccount": "111122223333"
             }
           }
         }
       ]
   }
   ```

1. 次のコマンドを使用して IAM サービスロールを作成します。

   ```
   aws iam create-role \
     --role-name S3TablesRoleForLakeFormation \
     --assume-role-policy-document file://Role-Trust-Policy.json
   ```

1. 次のポリシーを含むファイルを `LF-GluePolicy.json` という名前で作成します。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "LakeFormationPermissionsForS3ListTableBucket",
               "Effect": "Allow",
               "Action": [
                   "s3tables:ListTableBuckets"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket",
               "Effect": "Allow",
               "Action": [
                   "s3tables:CreateTableBucket",
                   "s3tables:GetTableBucket",
                   "s3tables:CreateNamespace",
                   "s3tables:GetNamespace",
                   "s3tables:ListNamespaces",
                   "s3tables:DeleteNamespace",
                   "s3tables:DeleteTableBucket",
                   "s3tables:CreateTable",
                   "s3tables:DeleteTable",
                   "s3tables:GetTable",
                   "s3tables:ListTables",
                   "s3tables:RenameTable",
                   "s3tables:UpdateTableMetadataLocation",
                   "s3tables:GetTableMetadataLocation",
                   "s3tables:GetTableData",
                   "s3tables:PutTableData"
               ],
               "Resource": [
                   "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
               ]
           }
       ]
   }
   ```

1. 次のコマンドを使用してポリシーをロールにアタッチします。

   ```
   aws iam put-role-policy \
     --role-name S3TablesRoleForLakeFormation \
     --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \
     --policy-document file://LF-GluePolicy.json
   ```

1. 以下を含むファイルを `input.json` という名前で作成します。

   ```
   {
       "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*",
       "WithFederation": true,
       "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation"
   }
   ```

1. 次のコマンドを使用してテーブルバケットを Lake Formation に登録します。

   ```
   aws lakeformation register-resource \
     --region us-east-1 \
     --with-privileged-access \
     --cli-input-json file://input.json
   ```

1. 次のカタログを含むファイルを `catalog.json` という名前で作成します。

   ```
   {
      "Name": "s3tablescatalog",
      "CatalogInput": {
         "FederatedCatalog": {
             "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*",
             "ConnectionName": "aws:s3tables"
          },
          "CreateDatabaseDefaultPermissions": [],
          "CreateTableDefaultPermissions": [],
          "AllowFullTableExternalDataAccess": "True"
      }
   }
   ```

1. 次のコマンドを使用して `s3tablescatalog` カタログを作成します。このカタログを作成すると、テーブルバケット、名前空間、テーブルに対応するオブジェクト AWS Glue Data Catalog が に入力されます。

   ```
   aws glue create-catalog \
     --region us-east-1 \
     --cli-input-json file://catalog.json
   ```

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

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

# S3 テーブルカタログでのデータベースとテーブルの作成
<a name="create-databases-tables-s3-catalog"></a>

 データベースを作成して Apache Iceberg テーブルを整理し、テーブルを作成して S3 テーブルカタログ内のデータのスキーマと場所を定義できます。

## データベースの作成 (コンソール)
<a name="w2aac13c27c25b5b1"></a>

1.  コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) を開き、データレイク管理者またはデータベース作成者としてサインインします。

1. ナビゲーションペインの **[データカタログ]** で **[データベース]** を選択します。

1. **[データベースの作成]** を選択します。

1.  **[データベースの作成]** ページで、**[データベース]** オプションを選択し、次の詳細を入力します。
   + **名前** – データベース用に一意の名前を入力します。
   + **データカタログ** – S3 テーブルカタログを選択します。データベースはこのカタログにあります。
   + **説明** – (オプション) 説明と場所を追加します。
   + **新しいテーブルの IAM アクセスコントロール** – オプションで、[このデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する] を選択します。このオプションの詳細については、「[データレイクのデフォルトセキュリティ設定の変更](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html)」を参照してください。
   + **[データベースを作成]** を選択します。S3 テーブルカタログの下に作成されたデータベースが表示されます。

## を使用してデータベースを作成する AWS CLI
<a name="w2aac13c27c25b5b3"></a>

次の CLI コマンドは、S3 テーブルカタログでデータベースを作成する方法を示しています。

```
aws glue create-database 
--region us-east-1 \
--catalog-id "123456789012:s3tablescatalog/test" \
--database-input \
 '{ "Name": "testglueclidbcreation" }'
```

## テーブルを作成する (AWS マネジメントコンソール)
<a name="w2aac13c27c25b5b5"></a>

 Lake Formation コンソールまたは AWS Glue `CreateTable` API を使用して、S3 テーブルカタログで Apache Iceberg メタデータテーブルを作成できます。

1. Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) を開き、データレイク管理者または `CreateTable` アクセス許可を持つユーザーとしてサインインします。

1. ナビゲーションペインの [データカタログ] で、**[テーブル]** を選択します。

1. [テーブルの作成] を選択します。

1. **[テーブルの作成]** ページで、テーブルの詳細を入力します。  
![\[S3 テーブルカタログ\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/s3-catalog-create-table.png)
   + **テーブル名** – テーブルの一意の名前を入力します。
   + **カタログ** – カタログとして S3 テーブルカタログを選択します。
   + **データベース** – S3 テーブルカタログでデータベースを選択します。
   +  **説明** – テーブルの説明を入力します。
   + **スキーマ** - [列を追加] を選択して、列と、列のデータ型を追加します。空のテーブルを作成して、後でスキーマを更新することもできます。Iceberg では、テーブルを作成した後でスキーマとパーティションを進化させることができます。[Athena クエリ] を使用してテーブルスキーマを更新し、[Spark クエリ] を使用してパーティションを更新できます。

1. [**Submit**] を選択してください。

## テーブルを作成する (AWS CLI)
<a name="w2aac13c27c25b5b7"></a>

```
aws glue create-table \ 
--database-name "testglueclidbcreation" \ 
--catalog-id "123456789012:s3tablescatalog/test" \ 
--region us-east-1 \ 
--table-input \ 
'{ "Name": "testtablegluecli", "Parameters": { "format": "ICEBERG" }, "StorageDescriptor": { "Columns": [ {"Name": "x", "Type": "int", "Parameters": {"required": "true"}} ] } }'
```

# 別の AWS アカウントに Amazon S3 テーブルバケットを登録する
<a name="register-cross-account-s3-table-bucket"></a>

ある AWS アカウントから個々の Amazon S3 テーブルバケット (ARN 形式:`arn:aws:s3tables:us-east-1:account-id:bucket/bucket-name`) を別のアカウントの Lake Formation に登録できます。例えば、アカウント A のテーブルバケットをアカウント B の Lake Formation に登録できます。

## 前提条件
<a name="w2aac13c27c27b5"></a>

クロスアカウントバケット登録を開始する前に:
+ アカウント A でテーブルバケットを作成します。
+ バケット登録の適切なアクセス許可を持つ IAM ロールをアカウント B に作成します。

  Lake Formation にテーブルバケットを登録するために必要なアクセス許可の詳細については、「[Amazon S3 テーブルカタログを データカタログおよび Lake Formation と統合するための前提条件](s3tables-catalog-prerequisites.md)」を参照してください。
+ S3 テーブルカタログを作成するアカウントにテーブルバケットを登録します。
+  クロスアカウントアクセスの場合、テーブルバケットの登録時に指定されたロールは、クロスアカウントバケットにアクセスするための適切なアクセス許可を持つアカウント内ロールである必要があります。ロールには、バケットリソースにアクセスするために必要な S3 Tables IAM アクションが必要です。

## クロスアカウントテーブルバケット登録
<a name="w2aac13c27c27b7"></a>

次の手順では、アカウント A がリソース所有アカウントであり、アカウント B がアクセス許可を管理するためにテーブルバケットが登録される場所です。

1. アカウント A AWS マネジメントコンソール の にサインインします。

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

1.  テーブルバケットを作成します。詳細については、「Amazon S3 ユーザーガイド」の「[デーブルバケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html)」を参照してください。

1. アカウント B にテーブルバケットを登録します。

    AWS CLI を使用して、アカウント A のテーブルバケットをアカウント B の Lake Formation に登録します。

   ```
   aws lakeformation register-resource \
   --resource-arn 'arn:aws:s3tables:us-east-1:account-A-id:bucket/single-bucket-name' \
   --role-arn arn:aws:iam::account-B-id:role/role-name \
   --region us-east-1
   ```

   account-A-id、single-bucket-name、account-B-id、および role-name を特定の値に置き換えます。

1. 次に、アカウント B でテーブルバケットのカタログを作成します。

    AWS CLIを使用してカタログを作成します。

   ```
   aws glue create-catalog --region us-east-1 \
   --cli-input-json \
   '{
      "Name": "catalog-name",
      "CatalogInput" : {
         "FederatedCatalog": {
            "Identifier": "arn:aws:s3tables:us-east-1:account A:bucket/single-bucket-name",
            "ConnectionName": "aws:s3tables"
         },
         "CreateDatabaseDefaultPermissions": [],
         "CreateTableDefaultPermissions": []      
      }
   }'
   ```

   catalog-name、account-A-id、bucket-name を特定の値に置き換えます。

    次の CLI の例は、カタログの詳細を表示する方法を示しています。

   ```
    aws glue get-catalog \
     --catalog-id account-id:catalog-name \
     --region us-east-1
   ```

1. 次に、アカウント B で新しく作成されたカタログにデータベースとテーブルを作成します。

   データベースを作成します。

   ```
   aws glue create-database \
     --region us-east-1 \
     --catalog-id "account-B-id:catalog-name" \
     --database-input \
   '{
     "Name": "database-name"
   }'
   ```

   テーブルを作成します。

   ```
   aws glue create-table \
     --database-name database-name \
     --catalog-id account-B-id:catalog-name\
     --region us-east-1 \
     --table-input \
     '{
           "Name": "table-name",
           "Parameters": {
               "format": "ICEBERG"
           },
           "StorageDescriptor": {
              "Columns": [
           {"Name": "x", "Type": "int", "Parameters": {"required": "true"}}
             ]
           }
   }'
   ```

   database-name、account-B-id、catalog-name、table-name を特定の値に置き換えます。

1. 次の例は、カタログ内のオブジェクトを表示する方法を示しています。

   データベースの詳細を表示します。

   ```
   aws glue get-database \
     --name database-name \
     --catalog-id account-B-id:catalog-name \
     --region us-east-1
   ```

   テーブルの詳細を表示します。

   ```
   aws glue get-table \
     --name table-name \
     --database-name database-name \
     --catalog-id account-B-id:catalog-name \
     --region us-east-1
   ```

   database-name、account-B-id、catalog-name、table-name を特定の値に置き換えます。

# アクセス許可の付与
<a name="s3-tables-grant-permissions"></a>

 S3 テーブルを と統合したら AWS Lake Formation、S3 テーブルカタログとカタログオブジェクト (テーブルバケット、データベース、テーブル) に対するアクセス許可を、アカウントの他の IAM ロールとユーザーに付与できます。Lake Formation アクセス許可を使用すると、Amazon Redshift Spectrum や Athena などの統合分析エンジンのユーザーに対して、テーブル、列、行レベルの粒度でアクセスコントロールを定義できます。

 許可は、名前付きリソース方式、または Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方式を使用して付与することができます。LF タグと LF タグ式を使用してアクセス許可を付与する前に、それらを定義してデータカタログオブジェクトに割り当てる必要があります。

詳細については、「[メタデータアクセスコントロールのための LF タグの管理](managing-tags.md)」を参照してください。

外部 AWS アカウントに Lake Formation アクセス許可を付与することで、データベースとテーブルを外部アカウントと共有できます。ユーザーはその後、複数のアカウントにまたがるテーブルを結合してクエリするクエリとジョブを実行できるようになります。データカタログリソースを別のアカウントと共有すると、そのアカウント内のプリンシパルは、そのリソースをプリンシパルのデータカタログ内にあるかのように操作することができます。

データベースとテーブルを外部アカウントと共有すると、**スーパーユーザー**のアクセス許可は使用できません。

 アクセス許可を付与する詳細な手順については、「[Lake Formation 許可の管理](managing-permissions.md)」セクションを参照してください。

## AWS CLI Amazon S3 テーブルに対するアクセス許可の付与例
<a name="w2aac13c27c29c15"></a>

```
aws lakeformation grant-permissions \
--cli-input-json \
'{
    "Principal": {
        "DataLakePrincipalIdentifier":"arn:aws:iam::111122223333:role/DataAnalystRole"
    },
    "Resource": {
        "Table": {
            "CatalogId":"111122223333:s3tablescatalog/amzn-s3-demo-bucket1",
            "DatabaseName":"S3 table bucket namespace <example_namespace>",
            "Name":"S3 table bucket table name <example_table>"
        }
    },
    "Permissions": [
        "SELECT"
    ]
}'
```

 コマンドに含めるパラメータは次のとおりです。
+ DataLakePrincipalIdentifier – アクセス許可を付与する IAM ユーザー、ロール、またはグループ ARN
+ CatalogId – データカタログを所有する 12 桁の AWS アカウント ID
+ DatabaseName – Amazon S3 テーブルバケット名前空間の名前
+ Name – Amazon S3 テーブルバケットのテーブル名
+ Permissions – 付与するアクセス許可。オプション: SELECT、INSERT、DELETE、DESCRIBE、ALTER、DROP、ALLL、SUPER

# 共有 Amazon S3 Tables へのアクセス
<a name="s3-tables-cross-account-sharing"></a>

 S3 テーブルカタログのデータベースまたはテーブルに対するクロスアカウントアクセス許可を付与した後、リソースにアクセスするには、共有データベースとテーブルへのリソースリンクを作成する必要があります。

1.  送信先アカウント (共有リソースを受信するアカウント) で、データベースリソースリンクを作成します。詳細な手順については、「[共有 Data Catalog データベースへのリソースリンクの作成](create-resource-link-database.md)」を参照してください。

   データベースリソースリンクを作成するための CLI の例

   ```
   aws glue create-database 
   --region us-east-1 
   --catalog-id "111122223333" 
   --database-input \
   '{
     "Name": "s3table_resourcelink",
     "TargetDatabase": {
       "CatalogId": "011426214932:s3tablescatalog/chmni-s3-table-bucket-011426214932",
       "DatabaseName": "s3_table_ns"
     },
     "CreateTableDefaultPermissions": []
   }'
   ```

1.  テーブルに対するクロスアカウントアクセス許可を付与します。

   クロスアカウントアクセス許可付与の CLI の例

   ```
   aws lakeformation grant-permissions \
   --region us-east-1 \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:role/S3TablesTestExecRole"
       },
       "Resource": {
           "Table": {
               "CatalogId": "011426214932:s3tablescatalog/chmni-s3-table-bucket-011426214932",
               "DatabaseName": "s3_table_ns",
               "Name": "test_s3_iceberg_table"
           }
       },
       "Permissions": [
           "ALL"
       ]
   }'
   ```

1.  リソースリンクに対する Lake Formation `DESCRIBE` アクセス許可を付与します。

    リソースリンクに対する describe アクセス許可を付与する CLI の例。

   ```
   aws lakeformation grant-permissions \
       --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:role/S3TablesTestExecRole
       --resource Database='{CatalogId=111122223333;, Name=s3table_resourcelink}' \
       --permissions DESCRIBE
   ```