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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

AWS Lake Formation 支持管理开放表格格式 (OTFs) 的访问权限,例如 Apache Iceberg、Apache Hudi 和 Linux 基金会 Delt a Lake。在本教程中,你将学习如何使用符号链接清单表创建 Iceberg、Hudi 和 Delta Lake,如何 AWS Glue Data Catalog 使用 Lake Formation 设置细粒度权限 AWS Glue,以及如何使用 Amazon Athena 查询数据。

注意

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

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

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

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

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

  5. 选择保存

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

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

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

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

  3. 选择保存

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

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

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

  4. 选择 Save changes(保存更改)

第 1 步:调配资源

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

使用 AWS CloudFormation 模板创建资源
  1. 在美国东部(弗吉尼亚北部)地区以IAM管理员身份登录 AWS CloudFormation 控制台,网址为 https://console.aws.amazon.com/cloudformation

  2. 选择启动堆栈

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

  4. 输入堆栈名称

  5. 选择下一步

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

  7. 查看最后一页上的详细信息,然后选择 “我确认这 AWS CloudFormation 可能会创建IAM资源”。

  8. 选择创建

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

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

    检索密码值:

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

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

    3. 记下密码的值。

第 2 步:为 Iceberg 表设置权限

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

创建 Iceberg 表

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

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

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

  3. 选择 native-iceberg-create

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

  5. 在 “Job det ail AWS Glue Data Catalog s” 下,展开 “高级属性”,然后选中 “用作 Hive 元数据仓” 旁边的复选框,将表元数据添加到中。 AWS Glue Data Catalog这将指定 AWS Glue Data Catalog 为作业中使用的数据目录资源的元数据库,并允许稍后对目录资源应用 Lake Formation 权限。

  6. 选择保存

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

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

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

在 Lake Formation 中注册数据位置

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

  1. 以数据湖管理员用户身份打开 La https://console.aws.amazon.com/lakeformation/ke 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. 以数据湖管理员用户身份登录,然后使用 AWS CloudFormation 输出中前面注明的密码以美国东部(弗吉尼亚北部)区域的身份登录。lf-consumer-analystuser

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

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

  4. 查询结果的位置框中,输入您在 AWS 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 表设置权限

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

创建 Hudi 表

在此步骤中,您将运行一个在数据 AWS Glue 目录中创建 Hudi 事务表的作业。

  1. 登录 AWS Glue 控制台https://console.aws.amazon.com/glue/位于美国东部(弗吉尼亚北部)区域

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

  3. 选择 native-hudi-create

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

  5. 在 “Job det ail AWS Glue Data Catalog s” 下,展开 “高级属性”,然后选中 “用作 Hive 元数据仓” 旁边的复选框,将表元数据添加到中。 AWS Glue Data Catalog这将指定 AWS Glue Data Catalog 为作业中使用的数据目录资源的元数据库,并允许稍后对目录资源应用 Lake Formation 权限。

  6. 选择保存

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

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

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

在 Lake Formation 中注册数据位置

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

  1. 以数据湖管理员用户身份登录 Lake https://console.aws.amazon.com/lakeformation/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. 以数据湖管理员用户身份登录,然后使用 AWS CloudFormation 输出中前面注明的密码以美国东部(弗吉尼亚北部)区域的身份登录。lf-consumer-analystuser

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

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

  4. 查询结果的位置框中,输入您在 AWS 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 表设置权限

在本节中,您将学习如何创建包含符号链接清单文件的 Delta Lake 表 AWS Glue Data Catalog、在中设置数据权限 AWS Lake Formation 以及如何使用 Amazon Athena 查询数据。

创建 Delta Lake 表

在此步骤中,您将运行一项在数据目录中创建 Delta Lake 事务表的 AWS Glue 作业。

  1. 登录 AWS Glue 控制台https://console.aws.amazon.com/glue/位于美国东部(弗吉尼亚北部)区域

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

  3. 选择 native-delta-create

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

  5. 在 “Job det ail AWS Glue Data Catalog s” 下,展开 “高级属性”,然后选中 “用作 Hive 元数据仓” 旁边的复选框,将表元数据添加到中。 AWS Glue Data Catalog这将指定 AWS Glue Data Catalog 为作业中使用的数据目录资源的元数据库,并允许稍后对目录资源应用 Lake Formation 权限。

  6. 选择保存

  7. 操作下选择运行

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

在 Lake Formation 中注册数据位置

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

  1. 在数据湖管理员用户处打开 Lake https://console.aws.amazon.com/lakeformation/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. 以数据湖管理员用户身份注销,然后使用 AWS CloudFormation 输出BusinessAnalystUser中前面注明的密码以美国东部(弗吉尼亚北部)区域的身份登录。

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

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

  4. 查询结果的位置框中,输入您在 AWS 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:清理 AWS 资源

清理资源

为防止向你收取不必要的费用 AWS 账户,请删除你在本教程中使用的 AWS 资源。

  1. 以管理员身份登录 AWS CloudFormation 控制台,网址为 https://console.aws.amazon.com/cloudformation。IAM

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