资源链接在 Lake Formation 中的工作原理
资源链接是一个数据目录对象,它是指向本地或共享数据库或表的链接。创建指向数据库或表的资源链接后,您可以在需要使用数据库或表名称的任何位置使用资源链接名称。表资源链接将与您拥有的或与您共享的表一起由 glue:GetTables()
返回,并在 Lake Formation 控制台的表页面上作为条目显示。数据库的资源链接的作用方式相似。
创建指向数据库或表的资源链接使您可以执行以下操作:
-
为数据目录中的数据库或表指定不同的名称。如果不同的 AWS 账户共享同名的数据库或表,或者如果您的账户中的多个数据库含有同名的表,则此功能特别有用。
-
通过在任何 AWS 区域中创建指向其他区域中数据库和表的资源链接,在这些区域中访问数据目录数据库和表。您可以使用 Athena、Amazon EMR 在任何区域通过这些资源链接运行查询,并运行 AWS Glue ETL Spark 作业,而无需复制源数据或 Glue Data Catalog 中的元数据。
-
使用 Amazon Athena 和 Amazon Redshift Spectrum 等集成 AWS 服务来运行查询,以访问共享数据库或表。Amazon Athena 等集成服务无法直接跨账户访问数据库或表。但是,他们可以访问您账户中指向其他账户中数据库和表的资源链接。
注意
无需创建资源链接即可在 AWS Glue 提取、转换、加载 (ETL) 脚本中引用共享数据库或表。但是,为了避免在多个 AWS 账户共享同名的数据库或表时出现歧义,您可以创建并使用资源链接,或者在调用 ETL 操作时指定目录 ID。
以下示例显示了 Lake Formation 控制台的表页面,其中列出了两个资源链接。资源链接名称始终以斜体显示。每个资源链接会与它链接的共享资源的名称和所有者一起显示。在此示例中,AWS 账户 1111-2222-3333 中的数据湖管理员与账户 1234-5678-9012 共享了表 inventory
和 incidents
。然后,该账户中的用户创建了指向这些共享表的资源链接。
以下是有关资源链接的注意事项和限制:
-
需要资源链接才能使 Athena 和 Redshift Spectrum 等集成服务能够查询共享表的基础数据。这些集成服务中的查询是针对资源链接名称构建的。
-
假定所含数据库的仅对此数据库中的新表使用 IAM 访问控制设置已关闭,则只有创建资源链接的主体才能查看和访问该资源链接。要使您账户中的其他主体能够访问资源链接,请向其授予对它的
DESCRIBE
权限。要使其他人能够删除资源链接,请向其授予对它的DROP
权限。数据湖管理员可以访问账户中的所有资源链接。要删除其他主体创建的资源链接,数据湖管理员必须先向自己授予对资源链接的DROP
权限。有关更多信息,请参阅 Lake Formation 权限参考。重要
授予对资源链接的权限不会授予对目标(链接)数据库或表的权限。您必须单独授予对目标的权限。
-
要创建资源链接,您需要拥有 Lake Formation
CREATE_TABLE
或CREATE_DATABASE
权限,以及glue:CreateTable
或glue:CreateDatabase
AWS Identity and Access Management (IAM) 权限。 -
您可以创建指向本地(自有)数据目录资源以及与您的 AWS 账户共享的资源的资源链接。
-
创建资源链接时,不会检查目标共享资源是否存在或您是否拥有对该资源的跨账户权限。这使您能够按任意顺序创建资源链接和共享资源。
-
如果删除资源链接,则不会删除链接的共享资源。如果您删除共享资源,则指向该资源的资源链接不会被删除。
-
您可以创建资源链接链。但是,这样做没有任何价值,因为 API 只访问第一个资源链接。