

# 从其他账户注册数据目录
<a name="data-sources-glue-cross-account"></a>

您可以使用 Athena 的跨账户 AWS Glue 目录功能来从您自己的账户以外的账户注册 AWS Glue 目录。在您为 AWS Glue 配置所需的 IAM 权限并将目录注册为 Athena `DataCatalog` 资源后，您可以使用 Athena 运行跨账户查询。有关配置所需权限的信息，请参阅 [配置 AWS Glue 数据目录的跨账户存取](security-iam-cross-account-glue-catalog-access.md)。

以下过程说明如何使用 Athena 将 AWS Glue Data Catalog 在不属于您的 Amazon Web Services 账户中配置为数据来源。

## 从控制台注册
<a name="data-sources-glue-cross-account-console"></a>

1. 请按 [配置 AWS Glue 数据目录的跨账户存取](security-iam-cross-account-glue-catalog-access.md) 中的步骤操作，以确保您有权查询其他账户中的数据目录。

1. 从 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 打开 Athena 控制台。

1. 如果控制台导航窗格不可见，请选择左侧的扩展菜单。  
![选择扩展菜单。](http://docs.aws.amazon.com/zh_cn/athena/latest/ug/images/nav-pane-expansion.png)

1. 选择**数据来源和目录**。

1. 选择右上角的 **Connect data source**（连接数据来源）。

1. 在 **Choose a data source**（选择数据来源）页面上，对于**Data sources**（数据来源），选择 **S3 - AWS Glue Data Catalog**，然后选择 **Next**（下一步）。

1. 在**输入数据来源详细信息**页面的 **AWS Glue Data Catalog** 部分中，对于**选择 AWS Glue Data Catalog**，选择 **AWS Glue Data Catalog 中的其他账户**。

1. 对于 **Data source details**（数据源详细信息），提供以下信息：
   + **Data source name**（数据源名称）– 输入要在 SQL 查询中使用的名称，以引用其他账户中的数据目录。
   + **Description**（描述）–（可选）输入其他账户中数据目录的描述。
   + **Catalog ID**（目录编号）– 输入数据目录所属账户的 12 位 Amazon Web Services 账户 ID。Amazon Web Services 账户 ID 即是目录 ID。

1. （可选）对于 **Tags**（标签），输入要与数据源关联的键-值对。有关标签的更多信息，请参阅[标记 Athena 资源](tags.md)。

1. 选择**下一步**。

1. 在 **Review and create**（审核和创建）页面中，检查数据来源的详细信息，然后选择 **Create data source**（创建数据来源）。**Data source details**（数据来源详细信息）页面列出了所注册数据目录的数据库和标签。

1. 选择**数据来源和目录**。您注册的数据目录在 **Data source name**（数据来源名称）列中列出。

1. 要查看或编辑有关数据目录的信息，请选择该目录，然后选择**Actions**（操作）、**Edit**（编辑）。

1. 要删除新数据目录，请选择该目录，然后选择 **Actions**（操作）、**Delete**（删除）。

## 使用 API 操作进行注册
<a name="data-sources-glue-cross-account-api"></a>

1. 以下 `CreateDataCatalog` 请求正文为跨账户访问注册了 AWS Glue 目录：

   ```
   # Example CreateDataCatalog request to register a cross-account Glue catalog:
   {
       "Description": "{{Cross-account Glue catalog}}",
       "Name": "{{ownerCatalog}}",
       "Parameters": {"catalog-id" : "{{<catalogid>}}"  # Owner's account ID
       },
       "Type": "GLUE"
   }
   ```

1. 以下示例代码使用 Java 客户端创建 `DataCatalog` 对象。

   ```
   # Sample code to create the DataCatalog through Java client
   CreateDataCatalogRequest request = new CreateDataCatalogRequest()
       .withName("{{ownerCatalog}}")
       .withType(DataCatalogType.GLUE)
       .withParameters(ImmutableMap.of("catalog-id", "{{<catalogid>}}"));
   
   athenaClient.createDataCatalog(request);
   ```

   完成这些步骤后，借入者应会在调用 [ListDataCatalogs](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListDataCatalogs.html) API 操作时看到 {{`ownerCatalog`}}。

## 使用 AWS CLI 进行注册
<a name="data-sources-glue-cross-account-cli"></a>

使用以下示例 CLI 命令从另一个账户注册 AWS Glue Data Catalog

```
aws athena create-data-catalog \
  --name cross_account_catalog \
  --type GLUE \
  --description "{{Cross Account Catalog}}" \
  --parameters catalog-id={{<catalogid>}}
```

有关更多信息，请参阅 *AWS 大数据博客*中的[使用 Amazon Athena 查询跨账户 AWS Glue Data Catalog](https://aws.amazon.com/blogs/big-data/query-cross-account-aws-glue-data-catalogs-using-amazon-athena/)。