亚马逊AWS官方博客

AWS Lake Formation 入门

Original URL:https://aws.amazon.com/cn/blogs/big-data/getting-started-with-aws-lake-formation/

基于 AWS Lake Formation 您可以轻松构建起安全的数据湖。 数据湖是一个集中的、有组织的、安全的数据存储环境,可以存储您的任意规模的结构化和非结构化数据。 您可以按原样存储数据,而无需先对其进行结构化。 您可以运行包括:仪表板、可视化、大数据处理、实时分析和机器学习等各种类型的分析和处理,以更好地指导决策制定。

构建数据湖面临的挑战

数据湖管理的主要挑战,源于原始数据存储内容没有被监管。为了使数据湖中的数据可用,您需要通过定义处理机制对数据进行编目和安全管理。Lake Formation提供了对数据湖实施治理、语义一致性和访问控制的机制。 Lake Formation使您的数据更容易的用于分析和机器学习,为您的业务提供更好的价值。Lake Formation 允许您控制和审计对数据湖的访问。AWS Glue Data Catalog集成了数据访问策略,无论数据来源如何,均可确保合规性。

演练

在本演练中,我将展示如何构建和使用数据湖:

  • 创建数据湖管理员。
  • 注册 Amazon S3 路径。
  • 创建数据库。
  • 授予权限。
  • 使用 AWS Glue 对数据进行爬取,以创建元数据表。
  • 授予对表数据的访问权限。
  • 使用 Amazon Athena 查询数据。
  • 添加具有受限访问权限的新用户并验证结果。

先决条

对于本演练,您需要以下资源:

  • AWS 账户
  • 具有 AWSLakeFormationDataAdmin 策略的 IAM 用户。有关更多信息,请参阅 IAM 访问策略
  • 名为 datalake-yourname-region 的 S3 存储桶(位于US-East (N. Virginia)
  • 新 S3 存储桶中名为 zipcode 的文件夹。

您需要下载样本数据集。在本演练中,使用纽约市统计数据。该数据可在 DATA.GOV 网站上的按邮政编码统计的纽约市人口统计数据表中找到。将文件上传到 S3 存储桶的 /zipcode 文件夹中。

确保您设置好了 S3 存储桶,并且已经将数据集上传到上述位置。现在,使用 Lake Formation 设置您的数据湖。

步骤 1:创建数据湖管理员

首先,将您自己指定为数据湖管理员,以允许访问任何 Lake Formation资源。

步骤 2:注册 Amazon S3 路径

接下来,注册 Amazon S3 路径以将您的数据包含在数据湖中。

步骤 3:创建数据库

接下来,在 AWS Glue Data Catalog中创建一个数据库以包含zipcode表定义。

  • Database: zipcode-db.
  • Location: 您的 S3 存储桶/zipcode.
  • New tables in this database: 请不要选择Grant All to Everyone.

步骤 4:授予权限

接下来,授予 AWS Glue 使用 zipcode-db 数据库的权限。对于“IAM users and roles”,选择你的用户和 AWSGlueServiceRoleDefault

授予你的用户和 AWSServiceRoleForLakeFormationDataAccess 使用数据湖的权限,该数据湖使用以下数据位置:

  • 针对“IAM users and roles”,选择你的用户和 AWSServiceRoleForLakeFormationDataAccess
  • 针对存储位置,输入 s3://datalake-yourname-region。

步骤 5:使用 AWS Glue 对数据进行爬取以创建元数据和表

在此步骤中,爬取程序将连接到数据存储,处理分类器的优先级列表以确定数据的结构,然后在 AWS Glue 数据目录中创建元数据表。

使用 AWS Glue Crawl创建表。使用以下配置设置:

  • Crawler name: zipcodecrawler.
  • Data stores: Select this field.
  • Choose a data store: Select S3.
  • Specified path: Select this field.
  • Include path: s3://datalake-yourname-location/zipcode.
  • Add another data store: Choose No.
  • Choose an existing IAM role: Select this field.
  • IAM role: Select AWSGlueServiceRoleDefault.
  • Run on demand: Select this field.
  • Database: Select zipcode-db.

选择“Run it now? ”。 然后等到爬取程序停止运行,再继续下一步。

步骤 6:授予对表数据的访问权限

设置您的 AWS Glue Data Catalog权限,以允许其他人管理数据。使用 Lake Formation 控制台授予和撤销对数据库中表的访问权限。

  • 在导航窗格中,选择Tables
  • 选择Grant
  • 提供以下信息:
    1. 针对 IAM users and roles ,选择你的用户和 AWSGlueServiceRoleDefault
    2. 针对Table permissions,选择Select all

步骤 7:使用 Athena 查询数据

接下来,使用 Athena 查询数据湖中的数据。

  • 在 Athena 控制台中,选择Query Editor ,然后选择 zipcode-db
  • 选择Tables,然后选择zipcode 表。
  • 选择Table Options (表名称右侧的三个垂直点)。
  • 选择Preview table。

在Athena 中执行以下查询:

SELECT * FROM “zipcode”.”zipcode” limit 10;

从以下屏幕截图中可以看到,datalakeadmin 用户可以查看所有数据。

步骤 8:添加具有有限访问权限的新用户并验证结果

此步骤显示作为数据湖管理员,您应如何设置用户,使其对特定表字段具有受限访问权限。

在 IAM 控制台中,创建 IAM 用户,该用户具有管理员权限并且称为user1,然后添加 AWSLakeFormationDataAdmin 策略。有关更多信息,请参阅“添加和删除 IAM 身份权限”。

在 Lake Formation 控制台中,向user1授予权限,并提供以下配置设置:

  • Database: Select zipcode-db.
  • Table: Select zipcode.
  • Columns: Choose The include columns.
  • The include columns: Choose Jurisdiction name and Count participants.
  • Table permissions: Select.
  • Grantable permissions: Select.

user1身份登录后重复步骤 7,验证受限权限的结果。如以下屏幕截图所示,user1只能查看 datalakeadmin 用户授予他们查看权限的列。

 

小结

本文向您展示了如何使用 Lake Formation 构建安全的数据湖。它提供了实施监管、语义一致性和访问控制等机制,让您的数据可以更好的被用来作分析和机器学习。

有关更多信息,请参阅以下内容:

 


关于作者

Gordon Heinrich 是一名与全球系统集成商合作的解决方案架构师。他与 AWS 合作伙伴和客户合作,为他们提供构建数据湖和使用 AWS 机器学习服务的架构指导。在闲暇时间,他喜欢和家人一起在科罗拉多滑雪、徒步旅行和骑山地车。