亚马逊AWS官方博客
AWS Lake Formation 入门
Original URL:https://aws.amazon.com/cn/blogs/big-data/getting-started-with-aws-lake-formation/
基于 AWS Lake Formation 您可以轻松构建起安全的数据湖。 数据湖是一个集中的、有组织的、安全的数据存储环境,可以存储您的任意规模的结构化和非结构化数据。 您可以按原样存储数据,而无需先对其进行结构化。 您可以运行包括:仪表板、可视化、大数据处理、实时分析和机器学习等各种类型的分析和处理,以更好地指导决策制定。
构建数据湖面临的挑战
演练
在本演练中,我将展示如何构建和使用数据湖:
- 创建数据湖管理员。
- 注册 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。
- 提供以下信息:
- 针对 IAM users and roles ,选择你的用户和 AWSGlueServiceRoleDefault。
- 针对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 机器学习服务的架构指导。在闲暇时间,他喜欢和家人一起在科罗拉多滑雪、徒步旅行和骑山地车。