亚马逊AWS官方博客

AWS Lake Formation – 现已正式推出

只要公司开始拥有数字格式的数据,就可以构建数据仓库,从他们的运营系统(例如,客户关系管理 [CRM] 系统和企业资源规划 [ERP] 系统)中收集数据,并依据这些信息做出业务决策。

得益于 Amazon S3 等服务,存储成本减少,同时庞大数据管理的复杂性进一步降低,因此公司可以保留更多信息,包括未经过结构化处理的原始数据,例如日志、图片、视频和扫描文档。

这就是数据湖的理念:将您的所有数据以任意规模存储在一个集中式存储库中。我们发现,许多客户已采用此方法,例如 Netflix、Zillow、NASDAQ、Yelp、iRobot、FINRA 和 Lyft。他们可以在这个更大的数据集上运行分析(从简单的聚合到复杂的机器学习算法),从而更好地探索数据模式并了解他们的业务。

去年在 re:Invent 大会上,我们介绍了 AWS Lake Formation 预览版,通过该服务,您可以轻松提取、清理、划分、转换和保护您的数据,并将其用于分析和机器学习。 我很高兴地宣布,Lake Formation 现已正式推出!

借助 Lake Formation,您可以使用中央控制台来管理您的数据湖,例如配置将多个来源(例如数据库和日志)的数据移动到数据湖的作业。数据量如此庞大,又如此多样化,因此配置正确的访问权限也非常重要。 您可以使用 Lake Formation 中定义的一系列精细数据访问策略,确保安全访问 Glue Data Catalog 中的元数据和 S3 中存储的数据。根据这些策略,您可以定义表级和列级数据访问权限。

Lake Formation 最让我喜欢的一点是它可以处理 S3 中的数据! 您可以使用 Lake Formation 轻松注册您的现有数据,并且无需更改将您的数据加载到 S3 的现有流程。数据仍然位于您的账户中,因此您可以完全控制这些数据。

您还可以使用 Glue ML Transforms 轻松删除重复数据。重复数据删除对于减少所需的存储量非常重要,同时还可以提高数据的分析效率,因为这消除了重复数据产生的开销,也不存在重复查看相同数据可能造成混淆的问题。如果使用唯一密钥标识重复记录,此问题便迎刃而解了,但是当您必须进行“模糊匹配”时,问题便会变得极具挑战性。 类似方法可用于记录链接,即在不同表中查找类似项,例如对两个不共享唯一密钥的数据库进行“模糊连接”。

如此一来,从头实施数据湖会更快,管理数据湖会更轻松,因此有更多客户可以使用这些技术。

创建数据湖
下面,我们通过 Lake Formation 控制台创建数据湖。 首先,注册将归属于我的数据湖的 S3 存储桶。然后,创建数据库并为将用于管理我的数据湖的 IAM 用户和角色授予权限。数据库在 Glue Data Catalog 中注册,并保留分析原始数据所需的元数据,例如在数据提取期间自动生成的表的结构。

对于数据湖,权限管理是最复杂的任务之一。例如,数据湖中的数据数量庞大、一些数据具有敏感性、关键任务型性质,并且数据采用不同的结构化、半结构化和非结构化格式。Lake Formation 提供一个中心位置,让一切简单化,因为您可以允许 IAM 用户、角色、组和 Active Directory 用户(通过联合)访问数据库、表,也可以选择性地允许或拒绝访问表中的特定列。

为简化数据提取,我可以使用蓝图在 AWS Glue 上为常见使用案例创建必要的工作流程、爬网程序和作业。 工作流程通过在 Glue 实体(例如触发器、爬网程序和作业)之间构建依赖关系来编排数据加载工作负载,同时允许您在控制台上直观地跟踪工作流程中不同节点的状态,从而更轻松地监控进度并排查问题。

数据库蓝图有助于从运营数据库中加载数据。例如,如果您有一个电子商务网站,则可以提取您的数据湖中的所有订单。您可以从现有数据库中加载完整快照,也可以增量加载新数据。如果是增量加载,您可以选择一个表及其一个或多个列作为书签键(例如,订单中的时间戳),以确定以前导入的数据。

日志文件蓝图可以简化 Application Load BalancersElastic Load BalancersAWS CloudTrail 所用日志格式的提取流程。下面,我们进一步了解下其工作原理。

安全性始终是重中之重,我希望能够拥有我账户中所有管理操作的取证日志,因此我选择 CloudTrail 蓝图。作为源,我选择一条将所有区域的 CloudTrail 日志收集到 S3 存储桶的路径。如此一来,我将能够跨所有 AWS 基础设施查询账户活动。 这同样适用于拥有多个 AWS 账户的更大型的组织:当在 CloudTrial 控制台中配置该路径时,他们只需要将该路径应用到整个组织即可。

然后,为数据湖选择目标数据库和 S3 位置。对于数据格式,我采用 Parquet,这是一种列式存储格式,可以提高数据查询的速度并降低查询成本。 导入频率可以设置为每小时一次到每月一次,还可以选择星期几和具体时间。现在,我希望按需运行工作流程。我可以通过控制台或以编程方式实现这一目的,例如,使用任何 AWS 开发工具包AWS 命令行界面 (CLI)

最后,我要为工作流程命名,在工作流程中添加要在执行期间使用的 IAM 角色,以及由该工作流程自动创建的表的前缀。

我通过 Lake Formation 控制台启动工作流程,并选择查看工作流程图表。这样会打开 AWS Glue 控制台,在这里我可以直观地看到工作流程各个环节并监控运行进度。

当工作流程完成后,我的数据湖数据库中就会出现一个新表。在 CloudTrail 的 S3 存储桶输出中,源数据仍然是日志,但是现在我已将它们按 Parquet 格式进行整合,并在我的数据湖 S3 位置按日期分区。为了优化成本,可以设置一个 S3 生命周期策略,使源 S3 存储桶中的数据在安全期过后自动过期。

确保安全访问数据湖
借助可增强 IAM 策略的全新授予/撤销权限模型,Lake Formation 可安全精细地访问数据湖中存储的数据。这些权限很容易设置,例如,通过控制台就能轻松设置:

只需选择我想要授予访问权限的 IAM 用户或角色。然后,选择要提供其访问权限的数据库,以及表和列(可选)。此外,还可以选择要提供的访问权限类型。在本演示中,只需选择权限即可。

访问数据湖
现在,我可以使用 Amazon AthenaAmazon Redshift 等工具查询数据。例如,在 Athena 控制台中打开查询编辑器。首先,我想使用新数据湖来查看我的 AWS 账户活动中最常见的源 IP 地址:

SELECT sourceipaddress, count(*)
FROM my_trail_cloudtrail
GROUP BY  sourceipaddress
ORDER BY  2 DESC;

查看查询结果时,您可以看到我最常用的 AWS API 终端节点。然后,我想查看使用了哪些用户身份类型。这些信息以 JSON 格式存储在其中一列内。我可以使用某些由 Amazon Athena 提供的 JSON 函数来获取 SQL 语句中的相应信息:

SELECT json_extract_scalar(useridentity, '$.type'), count(*)
FROM "mylake"."my_trail_cloudtrail"
GROUP BY  json_extract_scalar(useridentity, '$.type')
ORDER BY  2 DESC;

大多数情况下,AWS 服务会在跟踪过程中创建活动。这些查询只是示例,但借助这些查询,我可以快速深入了解我的 AWS 账户的活动。

您的业务也达到类似的效果! 借助数据库和日志蓝图,您可以快速创建工作流程以从您组织内的多个数据源中提取数据;在列级别设置正确权限来限制哪些人员可以访问收集的任何信息;通过机器学习转换来清理和准备数据;以及使用 Amazon Athena、Amazon Redshift 和 Amazon QuickSight 等工具关联信息并直观呈现信息。

使用列级别权限自定义数据访问
为了遵循数据隐私准则并确保合规性,数据湖中存储的关键任务型数据需要为公司内部的不同利益相关者创建自定义视图。我们来比较一下我的 AWS 账户中两个 IAM 用户的可见性,一个对表具有完整权限,另一个只有部分权限,只能访问同一个表的列的子集。

我已有一个名为 danilop 的用户,该用户具有包含 CloudTrail 数据的表的完整访问权限。我创建了一个新的 limitedview IAM 用户,并授予它访问 Athena 控制台的权限。在 Lake Formation 控制台中,我只向该新用户授予了部分权限,即访问三列数据。

为了验证表中数据的不同访问权限,我每次只以一个用户的身份登录,然后转到 Athena 控制台。在左侧,我可以了解已登录用户在 Glue Data Catalog 中可以看到哪些表和列。下面是对这两个用户的并排比较结果:

受限制的用户只能访问我显式配置的三列和用于对表进行分区的四列,访问表需要具备查看所有数据的权限。当我以 limitedview 用户的身份登录,并使用 select * SQL 语句在 Athena 控制台中查询表时,我只能看到这七列的数据:

现已推出
使用 AWS Lake Formation 没有额外费用,您只需支付使用 Amazon S3 和 AWS Glue 等基础服务的费用即可。 Lake Formation 的核心优势之一是它推出的安全策略。以前必须使用单独策略来保护数据和元数据访问,而这些策略只适用于表级别访问。现在,您可以从一个中心位置授予每个用户只访问他们需要使用的列的权限。

AWS Lake Formation 现已在美国东部(弗吉尼亚北部)美国东部(俄亥俄)美国西部(俄勒冈)欧洲(爱尔兰)亚太地区(东京)推出。Redshift 与 Lake Formation 集成需要安装 Redshift 集群版本 1.0.8610 或更高版本,当您阅读本文时,您的集群应该已自动更新。在接下来的几个月内,我们将为搭载 Amazon EMRApache Spark 提供支持。

本文对 Lake Formation 用途的介绍只是冰山一角。现在,您可以更轻松地为您的业务构建和管理数据湖,请告诉我您是如何使用这些新功能的!

Danilo