设置跨账户访问 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

设置跨账户访问

使用 Lake Formation 集成启动 Amazon EMR 集群后,您可以设置跨账户访问。Amazon Lake Formation 跨账户访问允许用户跨多个Amazon账户查询和联接表。

当您启用跨账户访问时,来自一个账户的用户可以精细访问 Glue 数据目录元数据及其属于另一个账户的基础数据。有关跨账户访问的更多信息,请参阅 Amazon Lake Formation 开发人员指南

Overview

要设置跨账户访问,您必须在登录以下Amazon账户时完成任务:

  • 账户 A – 一个Amazon账户,包含要与外部账户共享的 Lake Formation 数据。

  • 账户 B – 您要授予 Lake Formation 访问权限的外部Amazon账户。这应该是您已经启动了与 Lake Formation 集成的 EMR 集群的账户。

首先,您在账户 A 中设置数据资源并授予账户 B 对该资源的访问权限。然后,您登录账户 B,接受来自账户 A 的邀请,并创建资源链接,在账户 B 中为该资源指定新名称。最后,您从账户 B 向您的 Lake Formation IAM 角色添加权限,以便登录到您的集群的用户可以对账户 A 中链接的资源进行查询。

Prerequisites

要为跨账户访问准备数据目录,请在开始之前按照跨账户访问先决条件中的步骤进行操作。您还应该阅读跨账户最佳实践和限制,以确保跨账户设置满足您的数据访问要求。

设置跨账户访问

向账户 B 授予对账户 A 中资源的访问权限

  1. 使用账户 A 登录Amazon Web Services Management Console,并打开 Amazon Lake Formation 控制台。

  2. 按照用于注册位置的角色的要求中的说明为您的数据湖创建用户定义的服务角色。

  3. 根据注册 Amazon S3 位置中的说明,使用上一步中创建的用户定义角色在 Amazon S3 中注册存储位置。

    警告

    注册数据位置时,您必须使用用户定义的角色,而不是 Lake Formation 服务相关角色。当您与 EMR 集成时,Lake Formation 不支持使用其服务相关角色。

  4. 使用刚注册的数据位置创建数据库。有关说明,请参阅创建数据库

  5. 在上一步中设置的数据库中创建表。有关说明,请参阅创建表

  6. 将权限授予账户 B。指定以下值:

    • 在步骤 3 中创建的数据库。

    • 在步骤 4 中创建的表。

    • 您要授予访问权限的外部Amazon账户(账户 B)的账户 ID。

    • 选中 Table (表)Grantable (可授权) 权限下的 Select (选择) 旁边的复选框。您还必须为表选择 Describe (描述) 权限。当您向外部账户授予权限时,权限不会扩展到该外部账户中的任何委托人。您必须允许可授权权限,以便账户 B 能够反过来授予 Lake Formation 委托人访问其 IAM 角色的权限。

  7. 完成《Lake Formation 开发人员指南》允许在 Amazon EMR 上进行数据筛选中的步骤,以选择对账户 A 中 Amazon EMR 上的数据湖进行数据筛选。在 External data filtering (外部数据筛选) 页面上的 Amazon account IDs (亚马逊云科技账户 ID) 下指定账户 B 的 ID。

在账户 B 中完成跨账户访问的设置

  1. 在账户 A 中完成上述步骤之后,使用账户 B 登录Amazon Web Services Management Console。

  2. 在 Amazon Resource Access Manager 控制台中,接受来自账户 A 的共享资源邀请。有关说明,请参阅《Amazon Resource Access Manager用户指南》中的访问与您共享的资源

  3. 数据湖管理员身份访问 Amazon Lake Formation 控制台。

  4. 为账户 A 共享的远程数据库创建数据库资源链接,从而可以为数据目录中的远程数据库指定不同的名称。有关说明,请参阅创建指向共享数据目录数据库的资源链接

  5. Databases (数据库) 页面,选择您之前创建的数据库资源链接。

  6. Permissions (权限) 下的 Actions (操作) 的下拉菜单中,选择 Grant (授权)

  7. 对于 SAML and Amazon QuickSight users and groups (SAML 和 Amazon QuickSight 用户和组),选择您要授予访问权限的 SAML 用户或组,并确保在 Resource Link Permissions (资源链接权限) 下启用 Describe (描述)。有关更多信息,请参阅授予资源链接权限

  8. 选择 Grant (授权) 完成对资源链接的权限授予。

  9. Permissions (权限) 下的 Actions (操作) 的下拉菜单中,选择 Grant (授权目标)。此步骤是必需的,因为授予对资源链接的权限不会授予对目标(链接)数据库或表的权限。您必须对目标单独授予权限。有关更多信息,请参阅授予资源链接权限

  10. 对于 SAML and Amazon QuickSight users and groups (SAML 和 Amazon QuickSight 用户和组),选择您在步骤 7 中选择的相同 SAML 用户或组。

  11. 为您的 Lake Formation IAM 角色选择适当的目标权限,然后选择 Grant (授权)

现在,您应该能够从账户 B 中的 EMR 集群访问账户 A 中的资源。

例如,假设您创建了一个名为 resource-db-link 的资源链接,并授予了对 resource-db-link 数据库中表 t1 的所有列的访问权限。您现在可以使用以下 Spark SQL 查询检索第一列 col1

select col1 from resource-db-link.t1

有关跨账户访问疑难解答的信息,请参阅《Amazon Lake Formation 开发人员指南》中的 Lake Formation 疑难解答