从 Amazon CloudTrail 源头创建数据湖 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

从 Amazon CloudTrail 源头创建数据湖

本教程将指导您完成在 Lake Formation 控制台上执行的操作,以便从 Amazon CloudTrail 源头创建和加载您的第一个数据湖。

创建数据湖的主要步骤
  1. 将 Amazon Simple Storage Service (Amazon S3) 路径注册为数据湖。

  2. 授予向数据目录以及数据湖中的 Amazon S3 位置写入数据的 Lake Formation 权限。

  3. 创建数据库以整理数据目录中的元数据表。

  4. 使用蓝图创建工作流。运行工作流以从数据来源摄取数据。

  5. 设置您的 Lake Formation 权限,以允许其他人管理数据目录和数据湖中的数据。

  6. 设置 Amazon Athena,以查询您导入到 Amazon S3 数据湖中的数据。

  7. 对于一些数据存储类型,设置 Amazon Redshift Spectrum 以查询您导入到 Amazon S3 数据湖中的数据。

目标受众

下表列出了本教程中用于创建数据湖的角色。

目标受众
角色 描述
IAM管理员 有 Amazon 托管策略:AdministratorAccess. 可以创建IAM角色和 Amazon S3 存储桶。
数据湖管理员 可以访问数据目录、创建数据库以及向其他用户授予 Lake Formation 权限的用户。IAM权限比IAM管理员少,但足以管理数据湖。
数据分析人员 可以对数据湖运行查询的用户。拥有的权限仅足以运行查询。
工作流角色 具有运行工作流程所需IAM策略的角色。有关更多信息,请参阅 (可选)为工作流程创建 IAM 角色

先决条件

开始前的准备工作:

  • 请确保您已完成设置 Amazon Lake Formation中的任务。

  • 知道你的 CloudTrail 日志的位置。

  • Athena 要求数据分析师角色在使用 Athena 之前创建一个 Amazon S3 存储桶来存储查询结果。

假设熟悉 Amazon Identity and Access Management (IAM)。有关的信息IAM,请参阅《IAM用户指南》

第 1 步:创建数据分析师用户

此用户拥有查询数据湖所需的一组最低权限。

  1. 从 IAM 打开 https://console.amazonaws.cn/iam 控制台。以您在中创建的管理员用户或使用AdministratorAccess Amazon 托管策略的用户身份登录。

  2. 使用以下设置创建名为 datalake_user 的用户:

    • 启用 Amazon Web Services Management Console 访问权限。

    • 设置密码,不需要重置密码。

    • 附加AmazonAthenaFullAccess Amazon 托管策略。

    • 附加下面的内联策略。将该策略命名为 DatalakeUserBasic

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:SearchTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions", "lakeformation:GetResourceLFTags", "lakeformation:ListLFTags", "lakeformation:GetLFTag", "lakeformation:SearchTablesByLFTags", "lakeformation:SearchDatabasesByLFTags" ], "Resource": "*" } ] }

步骤 2:向工作流程角色添加读取 Amazon CloudTrail 日志的权限

  1. 将下面的内联策略附加到角色 LakeFormationWorkflowRole。该策略授予读取您的 Amazon CloudTrail 日志的权限。将该策略命名为 DatalakeGetCloudTrail

    要创建 LakeFormationWorkflowRole 角色,请参阅(可选)为工作流程创建 IAM 角色

    重要

    Replace(替换) <your-s3-cloudtrail-bucket> 以及您的 CloudTrail 数据所在的 Amazon S3 位置。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": ["arn:aws:s3:::<your-s3-cloudtrail-bucket>/*"] } ] }
  2. 确认向该角色附加了三项策略。

第 3 步:为数据湖创建 Amazon S3 存储桶

创建将作为数据湖根位置的 Amazon S3 存储桶。

  1. 打开 Amazon S3 控制台,https://console.aws.amazon.com/s3/并以您在中创建的管理员用户身份登录

  2. 选择 C reate bucket,然后通过向导创建名为的存储桶<yourName>-datalake-cloudtrail,其中 <yourName> 是您的名字首字母和姓氏。例如:jdoe-datalake-cloudtrail

    有关创建 Amazon S3 存储桶的详细说明,请参阅创建存储桶

第 4 步:注册 Amazon S3 路径

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

  1. 打开 Lake Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/。以数据湖管理员身份登录。

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

  3. 选择注册位置,然后选择浏览

  4. 选择您之前创建的<yourName>-datalake-cloudtrail存储桶,接受默认IAM角色AWSServiceRoleForLakeFormationDataAccess,然后选择注册位置

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

第 5 步:授予数据位置权限

主体必须拥有对数据湖位置的数据位置权限,才能创建指向该位置的数据目录表或数据库。您必须向该IAM角色授予工作流的数据定位权限,这样工作流才能写入数据摄取目标。

  1. 在导航窗格中的权限下,选择数据位置

  2. 选择授权,然后在授予权限对话框中进行以下选择:

    1. 对于IAM用户和角色,选择LakeFormationWorkflowRole

    2. 对于存储位置,选择您的 <yourName>-datalake-cloudtrail 存储桶。

  3. 选择授权

有关数据位置权限的更多信息,请参阅Underlying data access control

第 6 步:在数据目录中创建数据库

Lake Formation 数据目录中的元数据表存储在数据库中。

  1. 在导航窗格中的数据目录下,选择数据库

  2. 选择创建数据库,然后在数据库详细信息下输入名称 lakeformation_cloudtrail

  3. 将其他字段留空,然后选择创建数据库

第 7 步:授予数据权限

您必须授予在数据目录中创建元数据表的权限。由于工作流将与角色 LakeFormationWorkflowRole 一起运行,因此您必须向该角色授予这些权限。

  1. 在 Lake Formation 控制台的导航窗格中的数据目录下,选择数据库

  2. 选择 lakeformation_cloudtrail 数据库,然后从操作下拉列表中,选择“权限”标题下的授权

  3. 授予数据权限对话框中进行以下选择:

    1. 在 “委托人” 下,针对IAM用户和角色,选择LakeFormationWorkflowRole

    2. LF 标签或目录资源下,选择命名数据目录资源

    3. 对于数据库,您应该看到已添加 lakeformation_cloudtrail 数据库。

    4. 数据库权限下,选择创建表更改删除,如果已选中超级,请将其清除。

    现在,您的授予数据权限对话框看上去应类似于以下屏幕截图。

    “授予数据权限”对话框显示文本中描述的选项。该对话框分为 3 个竖直排列的部分:主体、LF 标签或目录资源以及数据库权限。
  4. 选择授权

有关授予 Lake Formation 权限的更多信息,请参阅管理 Lake Formation 权限

第 8 步:使用蓝图创建工作流

为了读取 CloudTrail 日志、了解其结构、在数据目录中创建相应的表,我们需要设置一个由Amazon Glue爬虫、作业、触发器和工作流组成的工作流程。Lake Formation 的蓝图简化了这一过程。

该工作流会生成作业、爬网程序和触发器,以用于发现数据并将其摄取到您的数据湖中。您可以基于其中一个预定义的 Lake Formation 蓝图创建工作流。

  1. 在 Lake Formation 控制台的导航窗格中,选择蓝图,然后选择使用蓝图

  2. 使用蓝图页面的蓝图类型下,选择Amazon CloudTrail

  3. 在 “导入来源” 下,选择 CloudTrail 来源和开始日期。

  4. 导入目标下,指定以下参数:

    目标数据库 lakeformation_cloudtrail
    目标存储位置 s3://<yourName>-datalake-cloudtrail
    Data format(数据格式) Parquet
  5. 对于导入频率,选择按需运行

  6. 导入选项下,指定以下参数:

    工作流名称 lakeformationcloudtrailtest
    IAM角色 LakeFormationWorkflowRole
    表前缀 cloudtrailtest
    注意

    必须小写。

  7. 选择创建,然后等待控制台报告已成功创建工作流。

    提示

    您是否收到了以下错误消息?

    User: arn:aws:iam::<account-id>:user/<datalake_administrator_user> is not authorized to perform: iam:PassRole on resource:arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole...

    如果是,请检查是否已更换 <account-id> 在内联策略中,适用于具有有效 Amazon 账号的数据湖管理员用户。

第 9 步:运行工作流

由于您指定了工作流程 run-on-demand,因此必须手动启动该工作流程。

  • 蓝图页面上,选择工作流 lakeformationcloudtrailtest,然后在操作菜单中选择开始

    当工作流运行时,您可以在上次运行状态列中查看其进度。时不时地选择刷新按钮。

    状态从RUNNING、到 “正在发现”、“正在导入” 和 “正在导入”,再到COMPLETED

    工作流完成后:

    • 数据目录中将具有新的元数据表。

    • 您的 CloudTrail 日志将被提取到数据湖中。

    如果工作流失败,请执行以下操作:

    1. 选择该工作流,然后在操作菜单上选择查看图表

      该工作流将在 Amazon Glue 控制台中打开。

    2. 确保已选择工作流,然后选择历史记录选项卡。

    3. 历史记录下,选择最近的运行,然后选择查看运行详细信息

    4. 在动态(运行时)图表中选择失败的作业或爬网程序,然后查看错误消息。失败的节点为红色或黄色。

第 10 步:在桌子SELECT上拨款

您必须授予对新数据目录表的 SELECT 权限,以便数据分析师可以查询这些表所指向的数据。

注意

工作流会自动向运行它的用户授予对它创建的表的 SELECT 权限。由于数据湖管理员运行了该工作流,因此您必须向数据分析师授予 SELECT

  1. 在 Lake Formation 控制台的导航窗格中的数据目录下,选择数据库

  2. 选择 lakeformation_cloudtrail 数据库,然后从操作下拉列表中,选择“权限”标题下的授权

  3. 授予数据权限对话框中进行以下选择:

    1. 在 “委托人” 下,针对IAM用户和角色,选择datalake_user

    2. LF 标签或目录资源下,选择命名数据目录资源

    3. 对于数据库,应该已经选择了 lakeformation_cloudtrail 数据库。

    4. 对于,选择 cloudtrailtest-cloudtrail

    5. 表和列权限 下,选择选择

  4. 选择授权

以数据分析师的身份执行下一步。

第 11 步:使用 Amazon Athena查询数据湖

使用 Amazon Athena 控制台查询 CloudTrail 数据湖中的数据。

  1. 打开 Athena 控制台,并https://console.aws.amazon.com/athena/以数据分析师用户身份登录。datalake_user

  2. 如有必要,请选择开始使用以继续使用 Athena 查询编辑器。

  3. 对于 Data source (数据源),选择 AwsDataCatalog

  4. 对于 Database (数据库),请选择 lakeformation_cloudtrail

    列表即会填充。

  5. 在表 cloudtrailtest-cloudtrail 旁边的溢出菜单(水平排列的 3 个点)上,选择预览表,然后选择运行

    查询即会运行并显示 10 行数据。

    如果您以前没有使用过 Athena,则必须先在 Athena 控制台中配置 Amazon S3 位置以用于存储查询结果。datalake_user 必须拥有必需的权限,才能访问您选择的 Amazon S3 存储桶。

注意

现在您已经完成了本教程的学习,请向组织中的主体授予数据权限和数据位置权限。