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