在 Lake Formation 中为开放表存储格式设置权限 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Lake Formation 中为开放表存储格式设置权限

Amazon Lake Formation 支持管理对诸如 Apache IcebergApache HudiLinux Foundation Delta Lake开放表格格式 (OTF) 的访问权限。在本教程中,您将学习如何通过 Amazon Glue 使用符号链接清单表在 Amazon Glue Data Catalog 中创建 Iceberg、Hudi 和 Delta Lake,如何使用 Lake Formation 设置精细权限,以及如何使用 Amazon Athena 查询数据。

注意

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

创建数据湖管理员
  1. 通过 https://console.aws.amazon.com/lakeformation/ 以管理员用户身份登录 Lake Formation 控制台。在本教程中,您将在美国东部(弗吉尼亚州北部)区域创建资源。

  2. 在 Lake Formation 控制台上的导航窗格中,在权限下选择管理角色和任务

  3. 数据湖管理员下选择数据湖管理员

  4. 在弹出窗口管理数据湖管理员中,在 IAM 用户和角色下,选择 IAM 管理用户

  5. 选择保存

启用数据湖设置
  1. 通过 https://console.aws.amazon.com/lakeformation/ 打开 Lake Formation 控制台。在导航窗格中的数据目录下,选择设置。取消选中以下选项:

    • 仅对新数据库使用 IAM 访问控制。

    • 仅对新数据库中的新表使用 IAM 访问控制。

  2. 跨账户版本设置下,选择版本 3 作为跨账户版本。

  3. 选择保存

将 Amazon Athena 引擎升级到版本 3
  1. 通过以下网址打开 Athena 控制台:https://console.aws.amazon.com/athena/

  2. 选择工作组,然后选择主工作组。

  3. 确保工作组的最低版本为 3。如果不是,请编辑工作组,为升级查询引擎选择手动,然后选择版本 3。

  4. 选择保存更改

第 1 步:调配资源

本节介绍如何使用 Amazon CloudFormation 模板设置 Amazon 资源。

使用 Amazon CloudFormation 模板创建资源
  1. 在美国东部(弗吉尼亚州北部)区域通过 https://console.aws.amazon.com/cloudformation 以 IAM 管理员身份登录 Amazon CloudFormation 控制台。

  2. 选择启动堆栈

  3. 创建堆栈屏幕上,选择下一步

  4. 输入堆栈名称

  5. 选择下一步

  6. 在下一页上,选择下一步

  7. 查看最后页面上的详细信息,然后选择我确认 Amazon CloudFormation 可以创建 IAM 资源

  8. 选择创建

    堆栈创建过程可能需要几分钟时间才能完成。

启动 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 – 数据分析师用户的密码

    检索密码值:

    1. 通过导航到 Secrets Manager 控制台来选择 lf-consumer-analystuser-credentials 值。

    2. 密钥值部分中,选择检索密钥值

    3. 记下密码的值。

第 2 步:为 Iceberg 表设置权限

在本节中,您将学习如何在 Amazon Glue Data Catalog 中创建 Iceberg 表、如何在 Amazon Lake Formation 中设置数据权限以及如何使用 Amazon Athena 查询数据。

创建 Iceberg 表

在这一步,您将运行一个在数据目录中创建 Iceberg 事务表的 Amazon Glue 作业。

  1. 在美国东部(弗吉尼亚州北部)区域通过 https://console.aws.amazon.com/glue/ 以数据湖管理员用户身份打开 Amazon Glue 控制台。

  2. 从左侧导航窗格中选择作业

  3. 选择 native-iceberg-create

    此图片是控制台中 Amazon Glue 作业页面的屏幕截图。
  4. 操作下,选择编辑作业

  5. 作业详细信息下,展开高级属性,并选中使用 Amazon Glue Data Catalog 作为 Hive 元存储旁边的框以在 Amazon Glue Data Catalog 中添加表元数据。这将指定 Amazon Glue Data Catalog 作为作业中使用的数据目录资源的元存储,并可在稍后对目录资源应用 Lake Formation 权限。

  6. 选择保存

  7. 选择运行。您可以查看运行中作业的状态。

    有关 Amazon Glue 作业的更多信息,请参阅《Amazon Glue 开发人员指南》中的在 Amazon Glue 控制台上处理作业

    此作业将在 lficebergdb 数据库中创建名为 product 的 Iceberg 表。在 Lake Formation 控制台中验证 Product 表。

在 Lake Formation 中注册数据位置

接下来,将 Amazon S3 路径注册为数据湖的位置。

  1. 通过 https://console.aws.amazon.com/lakeformation/ 以数据湖管理员用户身份打开 Lake Formation 控制台。

  2. 在导航窗格中的注册和提取下,选择数据位置

  3. 在控制台右上角,选择注册位置

  4. 注册位置页面上,输入以下内容:

    • Amazon S3 路径 – 选择浏览,然后选择 lf-otf-datalake-123456789012。单击 Amazon S3 根位置旁边的右箭头 (>) 以导航到 s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-iceberg 位置。

    • IAM 角色 — 选择 LF-OTF-RegisterRole 作为 IAM 角色。

    • 选择注册位置

    此图片是控制台中 Lake Formation 注册位置页面的屏幕截图。

    有关在 Lake Formation 中注册数据位置的更多信息,请参阅向数据湖添加 Amazon S3 位置

授予对 Iceberg 表的 Lake Formation 权限

在这一步,我们将向业务分析师用户授予数据湖权限。

  1. 数据湖权限下,选择授权

  2. 授予数据权限屏幕上,选择 IAM 用户和角色

  3. 从下拉列表中选择 lf-consumer-analystuser

    此图片是控制台中 Lake Formation 权限页面的屏幕截图。
  4. 选择命名数据目录资源

  5. 对于数据库,选择 lficebergdb

  6. 对于,选择 product

    此图片是控制台中 Lake Formation 权限页面的屏幕截图。
  7. 接下来,您可以通过指定列来授予基于列的访问权限。

    1. 表权限下,选择选择

    2. 数据权限下,选择基于列的访问权限,然后选择包括列

    3. 依次选择列 product_namepricecategory

    4. 选择授权

      此图片是控制台中 Lake Formation 权限页面的屏幕截图。
使用 Athena 查询 Iceberg 表

现在,您可以开始使用 Athena 查询您创建的 Iceberg 表。如果您是首次在 Athena 中运行查询,则需要配置查询结果位置。有关更多信息,请参阅指定查询结果位置

  1. 以数据湖管理员用户身份退出登录,然后使用之前记下的 Amazon CloudFormation 输出中的密码以 lf-consumer-analystuser 身份在美国东部(弗吉尼亚州北部)区域登录。

  2. https://console.aws.amazon.com/athena/ 打开 Athena 控制台。

  3. 选择设置,然后选择管理

  4. 查询结果位置框中,输入 Amazon CloudFormation 输出中您所创建的存储桶路径。复制 AthenaQueryResultLocation (s3://lf-otf-tutorial-123456789012/athena-results/) 的值,然后选择保存

  5. 运行以下查询以预览存储在 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 作业。

  1. 在美国东部(弗吉尼亚州北部)区域通过 https://console.aws.amazon.com/glue/ 登录 Amazon Glue 控制台

  2. 从左侧导航窗格中选择作业

  3. 选择 native-hudi-create

  4. 操作下,选择编辑作业

  5. 作业详细信息下,展开高级属性,并选中使用 Amazon Glue Data Catalog 作为 Hive 元存储旁边的框以在 Amazon Glue Data Catalog 中添加表元数据。这将指定 Amazon Glue Data Catalog 作为作业中使用的数据目录资源的元存储,并可在稍后对目录资源应用 Lake Formation 权限。

  6. 选择保存

  7. 选择运行。您可以查看运行中作业的状态。

    有关 Amazon Glue 作业的更多信息,请参阅《Amazon Glue 开发人员指南》中的在 Amazon Glue 控制台上处理作业

    此作业在 database:lfhudidb 中创建 Hudi(cow) 表。在 Lake Formation 控制台中验证 product 表。

在 Lake Formation 中注册数据位置

接下来,将 Amazon S3 路径注册为数据湖的根位置。

  1. 通过 https://console.aws.amazon.com/lakeformation/ 以数据湖管理员用户身份登录 Lake Formation 控制台。

  2. 在导航窗格中的注册和提取下,选择数据位置

  3. 在控制台右上角,选择注册位置

  4. 注册位置页面上,输入以下内容:

    • Amazon S3 路径 – 选择浏览,然后选择 lf-otf-datalake-123456789012。单击 Amazon S3 根位置旁边的右箭头 (>) 以导航到 s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-hudi 位置。

    • IAM 角色 — 选择 LF-OTF-RegisterRole 作为 IAM 角色。

    • 选择注册位置

授予对 Hudi 表的数据湖权限

在这一步,我们将向业务分析师用户授予数据湖权限。

  1. 数据湖权限下,选择授权

  2. 授予数据权限屏幕上,选择 IAM 用户和角色

  3. 从下拉列表中选择 lf-consumer-analystuser

  4. 选择命名数据目录资源

  5. 对于数据库,选择 lfhudidb

  6. 对于,选择 product

  7. 接下来,您可以通过指定列来授予基于列的访问权限。

    1. 表权限下,选择选择

    2. 数据权限下,选择基于列的访问权限,然后选择包括列

    3. 依次选择列 product_namepricecategory

    4. 选择授权

使用 Athena 查询 Hudi 表

现在开始使用 Athena 查询您创建的 Hudi 表。如果您是首次在 Athena 中运行查询,则需要配置查询结果位置。有关更多信息,请参阅指定查询结果位置

  1. 以数据湖管理员用户身份退出登录,然后使用之前记下的 Amazon CloudFormation 输出中的密码以 lf-consumer-analystuser 身份在美国东部(弗吉尼亚州北部)区域登录。

  2. https://console.aws.amazon.com/athena/ 打开 Athena 控制台。

  3. 选择设置,然后选择管理

  4. 查询结果位置框中,输入 Amazon CloudFormation 输出中您所创建的存储桶路径。复制 AthenaQueryResultLocation (s3://lf-otf-tutorial-123456789012/athena-results/) 的值并选择保存

  5. 运行以下查询以预览存储在 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 作业。

  1. 在美国东部(弗吉尼亚州北部)区域通过 https://console.aws.amazon.com/glue/ 登录 Amazon Glue 控制台

  2. 从左侧导航窗格中选择作业

  3. 选择 native-delta-create

  4. 操作下,选择编辑作业

  5. 作业详细信息下,展开高级属性,并选中使用 Amazon Glue Data Catalog 作为 Hive 元存储旁边的框以在 Amazon Glue Data Catalog 中添加表元数据。这将指定 Amazon Glue Data Catalog 作为作业中使用的数据目录资源的元存储,并可在稍后对目录资源应用 Lake Formation 权限。

  6. 选择保存

  7. 操作下选择运行

    此作业将在 lfdeltadb 数据库中创建名为 product 的 Delta Lake 表。在 Lake Formation 控制台中验证 product 表。

在 Lake Formation 中注册数据位置

接下来,将 Amazon S3 路径注册为数据湖的根位置。

  1. 通过 https://console.aws.amazon.com/lakeformation/ 以数据湖管理员用户身份打开 Lake Formation 控制台。

  2. 在导航窗格中的注册和提取下,选择数据位置

  3. 在控制台右上角,选择注册位置

  4. 注册位置页面上,输入以下内容:

    • Amazon S3 路径 – 选择浏览,然后选择 lf-otf-datalake-123456789012。单击 Amazon S3 根位置旁边的右箭头 (>) 以导航到 s3/buckets/lf-otf-datalake-123456789012/transactionaldata/native-delta 位置。

    • IAM 角色 — 选择 LF-OTF-RegisterRole 作为 IAM 角色。

    • 选择注册位置

授予对 Delta Lake 表的数据湖权限

在这一步,我们将向业务分析师用户授予数据湖权限。

  1. 数据湖权限下,选择授权

  2. 授予数据权限屏幕上,选择 IAM 用户和角色

  3. 从下拉列表中选择 lf-consumer-analystuser

  4. 选择命名数据目录资源

  5. 对于数据库,选择 lfdeltadb

  6. 对于,选择 product

  7. 接下来,您可以通过指定列来授予基于列的访问权限。

    1. 表权限下,选择选择

    2. 数据权限下,选择基于列的访问权限,然后选择包括列

    3. 依次选择列 product_namepricecategory

    4. 选择授权

使用 Athena 查询 Delta Lake 表

现在开始使用 Athena 查询您创建的 Delta Lake 表。如果您是首次在 Athena 中运行查询,则需要配置查询结果位置。有关更多信息,请参阅指定查询结果位置

  1. 以数据湖管理员用户身份注销,然后使用之前记下的 Amazon CloudFormation 输出中的密码以 BusinessAnalystUser 身份在美国东部(弗吉尼亚州北部)区域登录。

  2. https://console.aws.amazon.com/athena/ 打开 Athena 控制台。

  3. 选择设置,然后选择管理

  4. 查询结果位置框中,输入 Amazon CloudFormation 输出中您所创建的存储桶路径。复制 AthenaQueryResultLocation (s3://lf-otf-tutorial-123456789012/athena-results/) 的值并选择保存

  5. 运行以下查询来预览存储在 Delta Lake 表中的 10 条记录:

    select * from lfdeltadb.product limit 10;

    有关查询 Delta Lake 表的更多信息,请参阅《Amazon Athena 用户指南》中的查询 Delta Lake 表一节

第 5 步:清除 Amazon 资源

清理资源

为避免您的 Amazon Web Services 账户产生不必要的费用,请删除您在本教程中使用的 Amazon 资源。

  1. 通过 https://console.aws.amazon.com/cloudformation 以 IAM 管理员身份登录 Amazon CloudFormation 控制台。

  2. 删除 Cloud Formation 堆栈。您创建的表将自动与堆栈一起被删除。