配置跨账户数据目录存取
要访问其他账户中的数据目录,您可以使用 Athena 的跨账户 AWS Glue 功能或在 Lake Formation 中设置跨账户访问。
选项 A:在 Athena 中配置跨账户数据目录存取
您可以使用 Athena 的跨账户 AWS Glue 目录功能在您的账户中注册目录。此功能仅在 Athena 引擎版本 2 及更高版本中可用,并且仅限于在账户之间使用同一区域时。有关更多信息,请参阅 从其他账户注册数据目录。
如果要共享的数据目录在 AWS Glue 中配置了资源策略,必须更新该策略才能允许对 AWS Resource Access Manager 的访问,并向账户 B 授予使用账户 A 的数据目录的权限,如以下示例所示。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "ram.amazonaws.com" }, "Action": "glue:ShareResource", "Resource": [ "arn:aws:glue:
<REGION>
:<ACCOUNT-A>
:table/*/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:database/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:catalog" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<ACCOUNT-B>
:root" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:table/*/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:database/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:catalog" ] } ] }
有关更多信息,请参阅 配置 AWS Glue 数据目录的跨账户存取。
选项 B:在 Lake Formation 中配置跨账户存取
AWS Lake Formation 允许您使用单个账户管理中央 Data Catalog。您可以使用此功能来对 Data Catalog 元数据和底层数据实施跨账户访问。例如,拥有者账户可以授予另一个(收件人)账户对于表的 SELECT
权限。
要在 Athena 查询编辑器中显示共享数据库或表,您可以在 Lake Formation 中创建资源链接来访问共享数据库或表。当 Lake Formation 中的收件人账户查询拥有者的表格时,CloudTrail 会将数据访问事件添加到收件人账户和拥有者账户的日志中。
对于共享视图,请记住以下几点:
-
查询在目标资源链接上运行,而不是在源表或视图上运行,然后系统会将输出共享到目标账户。
-
仅共享视图是不够的。创建视图涉及的所有表都必须是跨账户共享的一部分。
-
基于共享资源创建的资源链接的名称必须与拥有者账户中资源的名称相匹配。如果名称不匹配,系统会显示与以下内容类似的错误消息:
Failed analyzing stored view 'awsdatacatalog.
(分析存储的视图“awsdatacatalog.my-lf-resource-link.my-lf-view”时失败:line 3:3: 架构 schema_name 不存在)。my-lf-resource-link
.my-lf-view
': line 3:3: Schemaschema_name
does not exist
有关 Lake Formation 中跨账户访问的更多信息,请参阅《AWS Lake Formation 开发人员指南》中的以下资源: