本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
访问共享的联合目录
AWS Lake Formation 跨账户功能允许用户在多个 AWS 账户 AWS 组织之间安全地共享分布式数据湖,或者直接与其他账户中的 IAM 委托人共享分布式数据湖,从而提供对元数据和底层数据的精细访问权限。
Lake Formation 使用 AWS Resource Access Manager (AWS RAM) 服务来促进资源共享。当您与其他账户共享目录资源时, AWS RAM 会向被授权者账户发送接受或拒绝资源授予的邀请。
Amazon Athena 和 Redshift Spectrum 等集成分析服务需要资源链接才能在查询中包含共享资源。委托人需要在自己的资源中创建指 AWS Glue Data Catalog 向其他 AWS 账户共享资源的资源链接。有关资源链接的更多信息,请参阅 Lake Formation 中资源链接的工作原理。
目录链接容器是一个数据目录对象,它引用来自其他账户的本地或跨账户联合数据库级目录。 AWS 您还可以在目录链接容器中创建数据库链接和表链接。创建数据库链接或表链接时,必须指定位于同一个目标 Amazon Redshift 数据库级目录(Amazon Redshift 数据库)下的目标资源。
要创建目录链接容器,您需要 Lake Formation CREATE_CATALOG 或 glue:CreateCatalog 权限。
您必须具有跨账户版本设置版本 4 才能跨 AWS 账户越多个共享联合目录中的数据库或表。
创建指向跨账户联合目录的目录链接容器
您可以使用 AWS Lake Formation 控制台、 AWS Glue
CreateCatalog API 或 () 创建指向任何 AWS 地区的 Redshift 数据库级联合目录的目录链接容器。 AWS Command Line Interface AWS CLI
创建指向共享目录的目录链接容器(控制台)
-
打开 AWS Lake Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/
。以拥有 Lake Formation CREATE_CATALOG权限的主体身份登录。 -
在导航窗格中,选择目录,然后选择创建目录。
-
在设置目录详细信息页面上,提供以下信息:
- Name
-
输入一个与目录名称遵循相同规则的名称。该名称可以与目标共享目录的名称相同。
- Type
-
选择目录链接容器作为目录类型。
- 来源
-
选择
Redshift。 - 目标 Redshift 目录
-
选择 Redshift 数据库级联合目录或从列表中选择本地(自有)目录。
列表中列出了与您的账户共享的所有目录。记下与每个目录一起列出的目录所有者账户 ID。如果您未看到您知道已与您的账户共享的目录,请检查以下内容:
-
如果您不是数据湖管理员,请检查数据湖管理员是否向您授予了对该目录的 Lake Formation 权限。
-
如果您是数据湖管理员,并且您的账户与授予账户不在同一个 AWS Organizations 中,请确保您已接受关于该目录的 AWS Resource Access Manager (AWS RAM)资源共享邀请。有关更多信息,请参阅 接受来自 AWS RAM 的资源共享邀请。
注意
通过控制台创建目录链接容器时,如果尝试选择跨账户 Redshift 目录,目标 Redshift 目录下拉列表可能会显示
No matches。尽管显示了此内容,但您仍可以在输入字段中手动输入 Amazon Redshift 数据库级联合目录(Amazon Redshift 数据库)的目标 ARN,并且该表单仍然可以正常工作。例如:arn:aws:glue:us-east-1:123456789012:catalog/federated-catalog-redshift/dev。之所以出现这种情况,是因为控制台只能在当前登录的账户中搜索可能的候选项。下拉列表旨在作为自动完成功能,但您仍然可以手动输入 ARNs 以进行跨账户访问。
-
-
要使 Apache Iceberg 查询引擎能够读取和写入亚马逊 Redshift 命名空间,请 AWS Glue 创建一个托管的 Amazon Redshift 集群,该集群具有在不影响 Amazon Redshift 数据仓库工作负载的情况下执行读写操作所需的计算和存储资源。您需要为 IAM 角色提供向 Amazon S3 存储桶或从中传输数据所需的权限。
-
选择下一步。
-
(可选)选择添加权限以向其他主体授予权限。
但是,授予对目录链接容器的权限不会授予对目标(已链接)目录的权限。您必须单独授予对目标目录的权限,才能在 Athena 中显示目录链接。
接下来,查看目录链接容器详细信息,并选择创建目录。
然后,您可以在目录页面中查看链接容器名称。
现在,您可以在目录链接容器中创建数据库链接和表链接,以允许通过查询引擎进行访问。
创建目录链接容器 CLI 示例
-
在以下示例中,
TargetRedshiftCatalog对象指定了 Amazon Redshift 数据库级联合目录(Amazon Redshift 数据库)的 ARN。创建目录链接容器时必须启用DataLakeAccess。aws glue create-catalog \ --cli-input-json '{ "Name":"linkcontainer", "CatalogInput": { "TargetRedshiftCatalog": { "CatalogArn":"arn:aws:us-east-1:123456789012:catalog/nscatalog/dev"}, "CatalogProperties": { "DataLakeAccessProperties" : { "DataLakeAccess" : true, "DataTransferRole" :"arn:aws:iam::111122223333:role/DataTransferRole"} } } }'
在目录链接容器中创建资源链接
您还可以在目录链接容器中创建数据库资源链接和表资源链接。创建数据库资源链接或表资源链接时,必须指定位于同一个目标 Amazon Redshift 数据库级目录(Amazon Redshift 数据库)下面,链接容器所指向的目标资源。
您可以使用 AWS Lake Formation 控制台、API 或 AWS Command Line Interface ()AWS CLI创建指向共享的 Amazon Redshift 数据库或表的资源链接。
-
有关详细说明,请参阅创建指向共享数据目录数据库的资源链接。
以下是在目录链接容器下创建数据库资源链接的 AWS CLI 示例。
aws glue create-database \ --cli-input-json \ '{ "CatalogId":"111122223333:linkcontainer", "DatabaseInput": { "Name":"dblink", "TargetDatabase": { "CatalogId":"123456789012:nscatalog/dev", "DatabaseName":"schema1"} } }' -
要在目录链接容器下创建表资源链接,需要先在本地 AWS Glue Data Catalog 创建一个包含表资源链接 AWS Glue 的数据库。
有关创建共享表的资源链接的更多信息,请参阅创建指向共享数据目录表的资源链接。
创建数据库来包含表资源链接的示例
aws glue create-database \ --cli-input-json \ '{ "CatalogId":"111122223333:linkcontainer", "DatabaseInput": { "Name":"db1", "Description":"creating parent database for table link"} }'-
创建表资源链接示例
aws glue create-table \ --cli-input-json \ '{ "CatalogId":"111122223333:linkcontainer", "DatabaseName":"db1", "TableInput": { "Name": "tablelink", "TargetTable": { "CatalogId":"123456789012:nscatalog/dev", "DatabaseName":"schema1", "Name":"table1"} } }'