

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

# 在另一个 Amazon 账户中注册 Amazon S3 表存储桶
在另一个 Amazon 账户中注册 Amazon S3 表存储桶

您可以将一个账户中的个人 Amazon S3 表存储桶（ARN 格式`arn:aws:s3tables:us-east-1:account-id:bucket/bucket-name`:）注册到 Amazon 另一个账户中的 Lake Formation。例如，您可以在账户 B 的 Lake Formation 中注册账户 A 中的表存储桶。

## 先决条件


开始跨账户存储桶注册之前：
+ 在账户 A 中创建表存储桶。
+ 在账户 B 中创建具有相应存储桶注册权限的 IAM 角色。

  有关向 Lake Formation 注册表存储桶所需权限的更多信息，请参阅 [将 Amazon S3 表类数据存储服务目录与 Data Catalog 和 Lake Formation 集成的先决条件](s3tables-catalog-prerequisites.md)。
+ 在要创建 S3 表目录的账户中注册表存储桶。
+  对于跨账户访问，注册表存储桶时指定的角色必须是具有相应权限的账户内角色，这样才能访问跨账户存储桶。该角色需要执行必要的 S3 表 IAM 操作才能访问存储桶资源。

## 跨账户表存储桶注册


在以下程序中，账户 A 是资源所属账户，账户 B 是注册表存储桶以管理访问权限的账户。

1. 登录账户 A. Amazon Web Services 管理控制台 

   打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1.  创建表存储桶。有关更多信息，请参阅《Amazon S3 用户指南》中的[创建表存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/s3-tables-buckets-create.html)。

1. 在账户 B 中注册表存储桶。

   使用将账户 A 中的表存储桶注册 Amazon CLI 到账户 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、和角色名称替换为您的特定值。

1. 接下来，为账户 B 中的表存储桶创建目录。

   使用 Amazon 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": []      
      }
   }'
   ```

   将目录名称 account-A-id、和存储桶名称替换为您的特定值。

    以下 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"}}
             ]
           }
   }'
   ```

   使用您的特定值替换数据库名称 account-B-id、目录名称和表名。

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
   ```

   使用您的特定值替换数据库名称 account-B-id、目录名称和表名。