

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 启用 Amazon S3 表类数据存储服务集成
<a name="enable-s3-tables-catalog-integration"></a>

您可以使用 Amazon S3 控制台创建 Amazon S3 表类数据存储服务存储桶，并将其与 Amazon 分析服务集成。有关更多信息，请参阅[将 Amazon S3 表类数据存储服务与 Amazon 分析服务配合使用](https://docs.amazonaws.cn/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)。

 在中 Amazon Lake Formation，您可以启用 Amazon S3 表格与 Amazon Glue Data Catalog Lake Formation 控制台的集成，也可以 Amazon Lake Formation 使用 Lake Formation 控制台或使用 Amazon CLI。

## 将 Amazon S3 表类数据存储服务与 Data Catalog 和 Lake Formation 集成（控制台）
<a name="w2aac13c27c23b7b1"></a>

1. 打开 Lake Formation 控制台，网址为[https://console.aws.amazon.com/lakeformation/](https://console.amazonaws.cn/lakeformation/)。

1. 在导航窗格的 **Data Catalog** 下，选择**目录**。

1. 在**目录**页面上选择**启用 S3 表集成**。  
![\[目录页面上的启用 S3 表集成选项。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/enable-s3-table-integration.png)

1.  选择一个具有所需权限的 IAM 角色，供 Lake Formation 代入，以便向分析查询引擎提供凭证。有关该角色访问数据所需的权限，请参阅先决条件部分的[step3-permissions](s3tables-catalog-prerequisites.md#step3-permissions)。  
![\[使用 IAM 角色启用 S3 集成屏幕。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/enable-s3-table-catalog.png)

1.  选择**支持外部引擎以完全表访问权限访问 Amazon S3 位置的数据**选项。当您为第三方引擎启用完全表访问权限时，Lake Formation 将直接向第三方引擎返回凭证，而无需执行 IAM 会话标签验证。这意味着您无法对要访问的表应用 Lake Formation 精细访问控制。

1. 请选择**启用**。S3 表的新目录已添加到目录列表中。启用 S3 表目录集成后，该服务会向 Lake Formation 注册 S3 表存储桶的数据位置。

1. 选择目录以查看目录对象并向其他主体授予权限。  
![\[S3 表目录\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/s3-table-catalog.png)

   要创建多级目录，请参阅《Amazon Simple Storage Service 用户指南》中的[创建表存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/s3-tables-buckets-create.html)部分。

## 将 Amazon S3 表类数据存储服务与 Data Catalog 和 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` 目录。创建此目录时，会 Amazon Glue Data Catalog 使用与表存储桶、命名空间和表对应的对象填充。

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

1. 使用以下命令验证是否已添加`s3tablescatalog`目录： Amazon Glue 

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