

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

# 资源链接在 Lake Formation 中的工作原理
<a name="resource-links-about"></a>

*资源链接*是一个数据目录对象，它是指向本地或共享数据库或表的链接。创建指向数据库或表的资源链接后，您可以在需要使用数据库或表名称的任何位置使用资源链接名称。表资源链接将与您拥有的或与您共享的表一起由 `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`表。然后，该账户中的用户创建了指向这些共享表的资源链接。

![“表”页面显示两个资源链接。资源链接名称显示在“名称”列下，共享表名称显示在“共享资源”列下，共享该表的账户显示在“共享资源所有者”列下。](http://docs.aws.amazon.com/zh_cn/lake-formation/latest/dg/images/tables-with-links.png)


以下是有关资源链接的注意事项和限制：
+ 需要资源链接才能使 Athena 和 Redshift Spectrum 等集成服务能够查询共享表的基础数据。这些集成服务中的查询是针对资源链接名称构建的。
+ 假定所含数据库的**仅对此数据库中的新表使用 IAM 访问控制**设置已关闭，则只有创建资源链接的主体才能查看和访问该资源链接。要使您账户中的其他主体能够访问资源链接，请向其授予对它的 `DESCRIBE` 权限。要使其他人能够删除资源链接，请向其授予对它的 `DROP` 权限。数据湖管理员可以访问账户中的所有资源链接。要删除其他主体创建的资源链接，数据湖管理员必须先向自己授予对资源链接的 `DROP` 权限。有关更多信息，请参阅 [Lake Formation 权限参考](lf-permissions-reference.md)。
**重要**  
授予对资源链接的权限不会授予对目标（链接）数据库或表的权限。您必须单独授予对目标的权限。
+ 要创建资源链接，你需要 Lake For `CREATE_TABLE` mation 或`CREATE_DATABASE`权限，以及`glue:CreateTable`或 `glue:CreateDatabase` AWS Identity and Access Management (IAM) 权限。
+ 您可以创建指向本地（拥有的）数据目录资源以及与您的 AWS 账户共享的资源的资源链接。
+ 创建资源链接时，不会检查目标共享资源是否存在或您是否拥有对该资源的跨账户权限。这使您能够按任意顺序创建资源链接和共享资源。
+ 如果删除资源链接，则不会删除链接的共享资源。如果您删除共享资源，则指向该资源的资源链接不会被删除。
+ 您可以创建资源链接链。但是，这样做没有任何价值，因为只 APIs 关注第一个资源链接。

**另请参阅：**  
[授予对数据目录资源的权限](granting-catalog-permissions.md)