在 Lake Formation 中为开放表存储格式设置权限
Amazon Lake Formation 支持管理对诸如 Apache Iceberg
注意
Amazon 分析服务并不支持所有事务表式。有关更多信息,请参阅 使用其他Amazon服务。本教程介绍如何仅使用 Amazon Glue 作业在数据目录中手动创建新数据库和表。
本教程中提供了一个用于进行快速设置的 Amazon CloudFormation 模板。您可以查看和自定义该模板来满足自己的需求。
主题
目标受众
本教程适用于 IAM 管理员、数据湖管理员和业务分析师。下表列出了本教程中使用 Lake Formation 创建受管控表时所使用的角色。
| 角色 | 描述 |
|---|---|
| IAM 管理员 | 可以创建 IAM 用户和角色以及 Amazon S3 存储桶的用户。具有 AdministratorAccess Amazon 托管策略。 |
| 数据湖管理员 | 可以访问数据目录、创建数据库以及向其他用户授予 Lake Formation 权限的用户。拥有的 IAM 权限比 IAM 管理员少,但足以管理数据湖。 |
| 业务分析师 | 可以对数据湖运行查询的用户。拥有运行查询的权限。 |
先决条件
在开始本教程之前,您必须拥有 Amazon Web Services 账户,您可使用具有正确权限的用户身份登录此账户。有关更多信息,请参阅注册 Amazon Web Services 账户和。
本教程假定您熟悉 IAM 角色和策略。有关 IAM 的信息,请参阅 IAM 用户指南。
要完成本教程,您需要设置以下 Amazon 资源。
数据湖管理员用户
Lake Formation 数据湖设置
Amazon Athena 引擎版本 3
创建数据湖管理员
-
通过 https://console.aws.amazon.com/lakeformation/
以管理员用户身份登录 Lake Formation 控制台。在本教程中,您将在美国东部(弗吉尼亚州北部)区域创建资源。 -
在 Lake Formation 控制台上的导航窗格中,在权限下选择管理角色和任务。
-
在数据湖管理员下选择数据湖管理员。
-
在弹出窗口管理数据湖管理员中,在 IAM 用户和角色下,选择 IAM 管理用户。
-
选择保存。
启用数据湖设置
-
通过 https://console.aws.amazon.com/lakeformation/
打开 Lake Formation 控制台。在导航窗格中的数据目录下,选择设置。取消选中以下选项: 仅对新数据库使用 IAM 访问控制。
-
仅对新数据库中的新表使用 IAM 访问控制。
-
在跨账户版本设置下,选择版本 3 作为跨账户版本。
-
选择保存。
将 Amazon Athena 引擎升级到版本 3
-
通过以下网址打开 Athena 控制台:https://console.aws.amazon.com/athena/
。 -
选择工作组,然后选择主工作组。
-
确保工作组的最低版本为 3。如果不是,请编辑工作组,为升级查询引擎选择手动,然后选择版本 3。
选择保存更改。
第 1 步:调配资源
本节介绍如何使用 Amazon CloudFormation 模板设置 Amazon 资源。
使用 Amazon CloudFormation 模板创建资源
在美国东部(弗吉尼亚州北部)区域通过 https://console.aws.amazon.com/cloudformation
以 IAM 管理员身份登录 Amazon CloudFormation 控制台。 选择启动堆栈
。 在创建堆栈屏幕上,选择下一步。
输入堆栈名称。
选择下一步。
在下一页上,选择下一步。
查看最后页面上的详细信息,然后选择我确认 Amazon CloudFormation 可以创建 IAM 资源。
选择创建。
堆栈创建过程可能需要几分钟时间才能完成。
启动 Cloud Formation 堆栈可创建以下资源:
-
lf-otf-datalake-123456789012 – 用于存储数据的 Amazon S3 存储桶
注意
Amazon S3 存储桶名称中附加的账户 ID 将由您的账户 ID 替换。
-
lf-otf-tutorial-123456789012 – 用于存储查询结果和 Amazon Glue job 作业脚本的 Amazon S3 存储桶
lficebergdb – Amazon Glue Iceberg 数据库
lfhudidb – Amazon Glue Hudi 数据库
-
lfdeltadb – Amazon Glue Delta 数据库
native-iceberg-create — 在数据目录中创建 Iceberg 表的 Amazon Glue 作业
native-hudi-create — 在数据目录中创建 Hudi 表的 Amazon Glue 作业
-
native-delta-create — 在数据目录中创建 Delta 表的 Amazon Glue 作业
LF-OTF-GlueServiceRole — 您传递给 Amazon Glue 以运行作业的 IAM 角色。此角色附加了访问数据目录、Amazon S3 存储桶等资源所需的策略。
LF-OTF-RegisterRole — 在 Lake Formation 中注册 Amazon S3 位置的 IAM 角色。此角色已附加
LF-Data-Lake-Storage-Policy。lf-consumer-analystuser – 使用 Athena 查询数据的 IAM 用户
-
lf-consumer-analystuser-credentials – 存储在 Amazon Secrets Manager 中的数据分析师用户密码
创建完堆栈后,导航至输出选项卡并记下以下各项的值:
AthenaQueryResultLocation – Athena 在其中查询输出的 Amazon S3 位置
BusinessAnalystUserCredentials – 数据分析师用户的密码
检索密码值:
通过导航到 Secrets Manager 控制台来选择
lf-consumer-analystuser-credentials值。在密钥值部分中,选择检索密钥值。
记下密码的值。
第 2 步:为 Iceberg 表设置权限
在本节中,您将学习如何在 Amazon Glue Data Catalog 中创建 Iceberg 表、如何在 Amazon Lake Formation 中设置数据权限以及如何使用 Amazon Athena 查询数据。
创建 Iceberg 表
在这一步,您将运行一个在数据目录中创建 Iceberg 事务表的 Amazon Glue 作业。
-
在美国东部(弗吉尼亚州北部)区域通过 https://console.aws.amazon.com/glue/
以数据湖管理员用户身份打开 Amazon Glue 控制台。 -
从左侧导航窗格中选择作业。
-
选择
native-iceberg-create。
-
在操作下,选择编辑作业。
-
在作业详细信息下,展开高级属性,并选中使用 Amazon Glue Data Catalog 作为 Hive 元存储旁边的框以在 Amazon Glue Data Catalog 中添加表元数据。这将指定 Amazon Glue Data Catalog 作为作业中使用的数据目录资源的元存储,并可在稍后对目录资源应用 Lake Formation 权限。
选择保存。
-
选择运行。您可以查看运行中作业的状态。
有关 Amazon Glue 作业的更多信息,请参阅《Amazon Glue 开发人员指南》中的在 Amazon Glue 控制台上处理作业。
此作业将在
lficebergdb数据库中创建名为product的 Iceberg 表。在 Lake Formation 控制台中验证 Product 表。
在 Lake Formation 中注册数据位置
接下来,将 Amazon S3 路径注册为数据湖的位置。
-
通过 https://console.aws.amazon.com/lakeformation/
以数据湖管理员用户身份打开 Lake Formation 控制台。 在导航窗格中的注册和提取下,选择数据位置。
在控制台右上角,选择注册位置。
在注册位置页面上,输入以下内容:
-
Amazon S3 路径 – 选择浏览,然后选择
lf-otf-datalake-123456789012。单击 Amazon S3 根位置旁边的右箭头 (>) 以导航到s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-iceberg位置。 -
IAM 角色 — 选择
LF-OTF-RegisterRole作为 IAM 角色。 选择注册位置。
有关在 Lake Formation 中注册数据位置的更多信息,请参阅向数据湖添加 Amazon S3 位置。
-
授予对 Iceberg 表的 Lake Formation 权限
在这一步,我们将向业务分析师用户授予数据湖权限。
在数据湖权限下,选择授权。
在授予数据权限屏幕上,选择 IAM 用户和角色。
-
从下拉列表中选择
lf-consumer-analystuser。
选择命名数据目录资源。
对于数据库,选择
lficebergdb。对于表,选择
product。
接下来,您可以通过指定列来授予基于列的访问权限。
在表权限下,选择选择。
在数据权限下,选择基于列的访问权限,然后选择包括列。
依次选择列
product_name、price和category。选择授权。
使用 Athena 查询 Iceberg 表
现在,您可以开始使用 Athena 查询您创建的 Iceberg 表。如果您是首次在 Athena 中运行查询,则需要配置查询结果位置。有关更多信息,请参阅指定查询结果位置。
以数据湖管理员用户身份退出登录,然后使用之前记下的 Amazon CloudFormation 输出中的密码以
lf-consumer-analystuser身份在美国东部(弗吉尼亚州北部)区域登录。从 https://console.aws.amazon.com/athena/
打开 Athena 控制台。 选择设置,然后选择管理。
在查询结果位置框中,输入 Amazon CloudFormation 输出中您所创建的存储桶路径。复制
AthenaQueryResultLocation(s3://lf-otf-tutorial-123456789012/athena-results/) 的值,然后选择保存。运行以下查询以预览存储在 Iceberg 表中的 10 条记录:
select * from lficebergdb.product limit 10;有关使用 Athena 查询 Iceberg 表的更多信息,请参阅《Amazon Athena 用户指南》中的查询 Iceberg 表。
第 3 步:为 Hudi 表设置权限
在本节中,您将学习如何在 Amazon Glue Data Catalog 中创建 Hudi 表、如何在 Amazon Lake Formation 中设置数据权限以及如何使用 Amazon Athena 查询数据。
创建 Hudi 表
在这一步,您将运行一个在数据目录中创建 Iceberg 事务表的 Amazon Glue 作业。
-
在美国东部(弗吉尼亚州北部)区域通过 https://console.aws.amazon.com/glue/
登录 Amazon Glue 控制台 。
-
从左侧导航窗格中选择作业。
-
选择
native-hudi-create。 -
在操作下,选择编辑作业。
-
在作业详细信息下,展开高级属性,并选中使用 Amazon Glue Data Catalog 作为 Hive 元存储旁边的框以在 Amazon Glue Data Catalog 中添加表元数据。这将指定 Amazon Glue Data Catalog 作为作业中使用的数据目录资源的元存储,并可在稍后对目录资源应用 Lake Formation 权限。
选择保存。
-
选择运行。您可以查看运行中作业的状态。
有关 Amazon Glue 作业的更多信息,请参阅《Amazon Glue 开发人员指南》中的在 Amazon Glue 控制台上处理作业。
此作业在 database:lfhudidb 中创建 Hudi(cow) 表。在 Lake Formation 控制台中验证
product表。
在 Lake Formation 中注册数据位置
接下来,将 Amazon S3 路径注册为数据湖的根位置。
-
通过 https://console.aws.amazon.com/lakeformation/
以数据湖管理员用户身份登录 Lake Formation 控制台。 在导航窗格中的注册和提取下,选择数据位置。
在控制台右上角,选择注册位置。
在注册位置页面上,输入以下内容:
-
Amazon S3 路径 – 选择浏览,然后选择
lf-otf-datalake-123456789012。单击 Amazon S3 根位置旁边的右箭头 (>) 以导航到s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-hudi位置。 -
IAM 角色 — 选择
LF-OTF-RegisterRole作为 IAM 角色。 选择注册位置。
-
授予对 Hudi 表的数据湖权限
在这一步,我们将向业务分析师用户授予数据湖权限。
在数据湖权限下,选择授权。
在授予数据权限屏幕上,选择 IAM 用户和角色。
-
从下拉列表中选择
lf-consumer-analystuser。 选择命名数据目录资源。
对于数据库,选择
lfhudidb。对于表,选择
product。接下来,您可以通过指定列来授予基于列的访问权限。
在表权限下,选择选择。
在数据权限下,选择基于列的访问权限,然后选择包括列。
依次选择列
product_name、price和category。选择授权。
使用 Athena 查询 Hudi 表
现在开始使用 Athena 查询您创建的 Hudi 表。如果您是首次在 Athena 中运行查询,则需要配置查询结果位置。有关更多信息,请参阅指定查询结果位置。
以数据湖管理员用户身份退出登录,然后使用之前记下的 Amazon CloudFormation 输出中的密码以
lf-consumer-analystuser身份在美国东部(弗吉尼亚州北部)区域登录。从 https://console.aws.amazon.com/athena/
打开 Athena 控制台。 选择设置,然后选择管理。
在查询结果位置框中,输入 Amazon CloudFormation 输出中您所创建的存储桶路径。复制
AthenaQueryResultLocation(s3://lf-otf-tutorial-123456789012/athena-results/) 的值并选择保存。运行以下查询以预览存储在 Hudi 表中的 10 条记录:
select * from lfhudidb.product limit 10;有关查询 Hudi 表的更多信息,请参阅《Amazon Athena 用户指南》中的查询 Hudi 表一节。
第 4 步:为 Delta Lake 表设置权限
在本节中,您将学习如何在 Amazon Glue Data Catalog 中使用符号链接清单文件创建 Delta Lake 表、如何在 Amazon Lake Formation 中设置数据权限以及如何使用 Amazon Athena 查询数据。
创建 Delta Lake 表
在这一步,您将运行一个在数据目录中创建 Delta Lake 事务表的 Amazon Glue 作业。
-
在美国东部(弗吉尼亚州北部)区域通过 https://console.aws.amazon.com/glue/
登录 Amazon Glue 控制台 。
-
从左侧导航窗格中选择作业。
-
选择
native-delta-create。 -
在操作下,选择编辑作业。
-
在作业详细信息下,展开高级属性,并选中使用 Amazon Glue Data Catalog 作为 Hive 元存储旁边的框以在 Amazon Glue Data Catalog 中添加表元数据。这将指定 Amazon Glue Data Catalog 作为作业中使用的数据目录资源的元存储,并可在稍后对目录资源应用 Lake Formation 权限。
选择保存。
-
在操作下选择运行。
此作业将在
lfdeltadb数据库中创建名为product的 Delta Lake 表。在 Lake Formation 控制台中验证product表。
在 Lake Formation 中注册数据位置
接下来,将 Amazon S3 路径注册为数据湖的根位置。
-
通过 https://console.aws.amazon.com/lakeformation/
以数据湖管理员用户身份打开 Lake Formation 控制台。 在导航窗格中的注册和提取下,选择数据位置。
在控制台右上角,选择注册位置。
在注册位置页面上,输入以下内容:
-
Amazon S3 路径 – 选择浏览,然后选择
lf-otf-datalake-123456789012。单击 Amazon S3 根位置旁边的右箭头 (>) 以导航到s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-delta位置。 -
IAM 角色 — 选择
LF-OTF-RegisterRole作为 IAM 角色。 选择注册位置。
-
授予对 Delta Lake 表的数据湖权限
在这一步,我们将向业务分析师用户授予数据湖权限。
在数据湖权限下,选择授权。
在授予数据权限屏幕上,选择 IAM 用户和角色。
-
从下拉列表中选择
lf-consumer-analystuser。 选择命名数据目录资源。
对于数据库,选择
lfdeltadb。对于表,选择
product。接下来,您可以通过指定列来授予基于列的访问权限。
在表权限下,选择选择。
在数据权限下,选择基于列的访问权限,然后选择包括列。
依次选择列
product_name、price和category。选择授权。
使用 Athena 查询 Delta Lake 表
现在开始使用 Athena 查询您创建的 Delta Lake 表。如果您是首次在 Athena 中运行查询,则需要配置查询结果位置。有关更多信息,请参阅指定查询结果位置。
以数据湖管理员用户身份注销,然后使用之前记下的 Amazon CloudFormation 输出中的密码以
BusinessAnalystUser身份在美国东部(弗吉尼亚州北部)区域登录。从 https://console.aws.amazon.com/athena/
打开 Athena 控制台。 选择设置,然后选择管理。
在查询结果位置框中,输入 Amazon CloudFormation 输出中您所创建的存储桶路径。复制
AthenaQueryResultLocation(s3://lf-otf-tutorial-123456789012/athena-results/) 的值并选择保存。运行以下查询来预览存储在 Delta Lake 表中的 10 条记录:
select * from lfdeltadb.product limit 10;有关查询 Delta Lake 表的更多信息,请参阅《Amazon Athena 用户指南》中的查询 Delta Lake 表一节。
第 5 步:清除 Amazon 资源
清理资源
为避免您的 Amazon Web Services 账户产生不必要的费用,请删除您在本教程中使用的 Amazon 资源。
-
通过 https://console.aws.amazon.com/cloudformation
以 IAM 管理员身份登录 Amazon CloudFormation 控制台。 -
删除 Cloud Formation 堆栈。您创建的表将自动与堆栈一起被删除。