

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

# 使用 AWS Glue 连接创建联合目录
<a name="create-fed-catalog-data-source"></a>

 要将 AWS Glue Data Catalog 连接到外部数据源，您需要使用能够与外部数据源进行通信的 AWS Glue 连接。您可以使用 AWS Glue 控制台、[创建 AWS Glue 连接](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateConnection.html) API 和 Amazon SageMaker Lakehouse 控制台创建连接。

有关创建连接的分步说明，请参阅 AWS Glue 开发者指南中的 AWS Glue 连接[数据](https://docs.aws.amazon.com/glue/latest/dg/glue-connections.html)或在 [Amazon SageMaker Lakehouse 中创建连接](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/lakehouse-create-connection.html)。

当用户对联合表运行查询时，Lake Formation 会出售证书，这些凭据调用 AWS Glue 连接中指定的 AWS Lambda 函数从数据源检索元数据对象。

------
#### [ AWS 管理控制台 ]

**从外部数据来源创建联合目录并设置权限（控制台）**

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

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

1. 选择**创建目录**选项。

1. 在**设置目录**详细信息页面上，输入以下信息：  
![带有选项的创建目录页面。](http://docs.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/create-glue-connection-catalog.png)
   + **名称**：您的联合目录的唯一名称。名称不能更改，且必须为小写。名称最多可包含 255 个字符，并且在账户内必须是唯一的。
   + **类型**：选择联合目录作为目录类型。
   + **来源**：从下拉列表中选择一个数据来源。将显示您为其创建了连接的数据来源。有关创建外部数据源 AWS Glue 连接的更多信息，请参阅 AWS Glue 开发者指南中的[为连接器创建连接](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html)或在 [Amazon SageMaker Lakehouse 中创建连接](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/lakehouse-create-connection.html)。
   + **连接**-选择与数据源的现有 AWS Glue 连接。
   + **描述**：输入从数据来源创建的目录的描述。

1. 选择 **IAM 角色**来让 Lake Formation 代入，以便为查询引擎提供凭证，从而访问数据来源中的数据。此角色必须具有访问 AWS Glue 连接和调用 Lambda 函数访问来自外部数据源的数据所需的权限。

   您也可以在 IAM 控制台中**创建新角色**。

   有关所需权限，请参阅 [将 Data Catalog 连接到外部数据来源的先决条件](connect-data-source-prerequisites.md) 部分。

1.  选择**激活连接器以连接到数据来源**选项，以便使 Athena 可以运行联合查询。

   有关支持的连接器列表，请参阅《Amazon Athena 用户指南》中的[注册连接](https://docs.aws.amazon.com/athena/latest/ug/register-connection-as-gdc.html)。

1. **加密选项**：如果要使用自定义密钥来加密目录，请选择**自定义加密设置**选项。要使用自定义密钥，必须向 KMS 密钥添加额外的自定义托管式密钥策略。

1. 选择**下一步**向其他主体授予权限。

1. 在**授予权限**页面上，请选择**添加权限**。

1.  在**添加权限**屏幕上，选择主体和要授予的权限类型。  
![包含主体类型和授予选项的目录权限页面。](http://docs.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/catalog-permissions.png)
   +  在**主体**部分中，选择主体类型，然后指定要授予权限的主体。
     + **IAM 用户和角色**：从 IAM 用户和角色列表中选择一个或多个用户或角色。
     + **SAML 用户和群组** — 对于 SAML 以及 Amazon Quick 用户和群组，请为通过 SAML 联合的用户或群组或 Amazon Quick 用户或群组输入一个或多个 ARNs Amazon 资源名称 (ARNs)。在每个 ARN 后按 **Enter**。
   +  在**权限**部分中，选择权限和可授予的权限。

     在**目录权限**下，选择要授予的一项或多项权限。

     选择**超级用户**以授予对目录中所有资源的不受限管理权限。

      在 “**可授予权限**” 下，选择授予接受者可以向其 AWS 账户中的其他委托人授予的权限。当您从外部账户向 IAM 委托人授予权限时，不支持此选项。

1. 选择**下一步**检查信息并创建目录。**目录**列表会显示新的联合目录。

   **数据位置**列表会显示新注册的联合连接。  
![数据位置与联合连接一起列出。](http://docs.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/federated_data_lake_location.png)

------
#### [ AWS CLI ]

**从外部数据来源创建联合目录并设置权限**

1.  以下示例显示了如何创建 AWS Glue 连接。

   ```
   aws glue create-connection 
     --connection-input \
         '{
            "Name": {{"DynamoDB connection"}},
            "ConnectionType": {{"DYNAMODB"}},
            "Description": {{"A connection created for DynamoDB"}},
            "ConnectionProperties": {},
            "AthenaProperties": "spill_prefix": {{"your_spill_prefix"}},
            "lambda_function_arn": {{"Lambda_function_arn"}},
            "spill_bucket": {{"Your_Bucket_name"}},
            "AuthenticationConfiguration": {}
         }'
   ```

1.  以下示例显示了如何向 Lake For AWS Glue mation 注册连接。

   ```
   aws lakeformation register-resource 
     --cli-input-json \
       {"ResourceArn":{{"arn:aws:glue:us-east-1:123456789012:connection/dynamo","RoleArn":"arn:aws:iam::123456789012:role/AdminTelemetry"}},"WithFederation":true}
   ```

1.  以下示例演示了如何创建联合目录。

   ```
   aws glue create-catalog 
    --cli-input-json \
         '{
          "Name":"ddbcatalog",
          "CatalogInput":{"CatalogProperties":{"DataLakeAccessProperties":{"DataTransferRole":"arn:aws:iam::123456789012:role/{{role name}}"}},
          "CreateDatabaseDefaultPermissions":[],
          "CreateTableDefaultPermissions":[],
          "FederatedCatalog":{"ConnectionName":"dynamo","Identifier":"dynamo"}
            }
          }'
   ```

------