使用 AWS Glue 连接创建联合目录 - AWS Lake Formation

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

使用 AWS Glue 连接创建联合目录

要将 AWS Glue Data Catalog 连接到外部数据源,您需要使用能够与外部数据源进行通信的 AWS Glue 连接。您可以使用 AWS Glue 控制台、创建 AWS Glue 连接 API 和 Amazon SageMaker Lakehouse 控制台创建连接。

有关创建连接的分步说明,请参阅 AWS Glue 开发者指南中的 AWS Glue 连接数据或在 Amazon SageMaker Lakehouse 中创建连接

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

AWS 管理控制台
从外部数据来源创建联合目录并设置权限(控制台)
  1. 打开 Lake Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/

  2. 在导航窗格的 Data Catalog 下,选择目录

  3. 选择创建目录选项。

  4. 设置目录详细信息页面上,输入以下信息:

    带有选项的创建目录页面。
    • 名称:您的联合目录的唯一名称。名称不能更改,且必须为小写。名称最多可包含 255 个字符,并且在账户内必须是唯一的。

    • 类型:选择联合目录作为目录类型。

    • 来源:从下拉列表中选择一个数据来源。将显示您为其创建了连接的数据来源。有关创建外部数据源 AWS Glue 连接的更多信息,请参阅 AWS Glue 开发者指南中的为连接器创建连接或在 Amazon SageMaker Lakehouse 中创建连接

    • 连接-选择与数据源的现有 AWS Glue 连接。

    • 描述:输入从数据来源创建的目录的描述。

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

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

    有关所需权限,请参阅 将 Data Catalog 连接到外部数据来源的先决条件 部分。

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

    有关支持的连接器列表,请参阅《Amazon Athena 用户指南》中的注册连接

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

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

  9. 授予权限页面上,请选择添加权限

  10. 添加权限屏幕上,选择主体和要授予的权限类型。

    包含主体类型和授予选项的目录权限页面。
    • 主体部分中,选择主体类型,然后指定要授予权限的主体。

      • IAM 用户和角色:从 IAM 用户和角色列表中选择一个或多个用户或角色。

      • SAML 用户和群组 — 对于 SAML 以及 Amazon Quick Suite 用户和群组,请为通过 SAML 联合的用户或群组或 Amazon Quick Suite 用户或群组输入一个或多个 ARNs 亚马逊资源名称 (ARNs)。在每个 ARN 后按 Enter

    • 权限部分中,选择权限和可授予的权限。

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

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

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

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

    数据位置列表会显示新注册的联合连接。

    数据位置与联合连接一起列出。
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": {} }'
  2. 以下示例显示了如何向 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}
  3. 以下示例演示了如何创建联合目录。

    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"} } }'