本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用分布式 Map 处理 Amazon S3 存储桶中的数据
此示例项目演示了如何使用分布式 Map 状态 来处理大规模数据,例如,分析历史天气数据并确定每月地球上平均温度最高的气象站。天气数据记录在超过 12,000 个CSV文件中,这些文件又存储在 Amazon S3 存储桶中。
此示例项目包括两个名为 “分布式 S3 副本NOA数据” 和 P 的分布式地图状态rocessNOAAData。 分布式 S3 副本NOA数据会迭代名为 noaa-gsod-pdsAmazon S3 的公有 Amazon S3 存储桶中的CSV文件,并将它们复制到您的 AWS 账户中的 Amazon S3 存储桶中。P rocessNOAAData 遍历复制的文件,并包含用于执行温度分析的 Lambda 函数。
示例项目首先通过调用 ListObjectsV2 API 操作来检查 Amazon S3 存储桶的内容。根据响应此调用返回的密钥数量,示例项目会做出以下决定之一:
-
如果密钥计数大于或等于 1,则项目将转换到 P rocessNOAAData 状态。此分布式地图状态包括 Lambda 名为TemperatureFunction的函数用于查找每月平均温度最高的气象站。此函数返回一个以
year-month
为密钥的目录和一个包含将气象站相关信息作为值的目录。 -
如果返回的密钥计数不超过 1,则分布式 S3 副本NOA数据状态将列出公共存储桶中的所有对象,noaa-gsod-pds并以 100 个为一批迭代的方式将各个对象复制到您账户中的另一个存储桶。内联 Map 会执行对象的迭代复制。
复制完所有对象后,项目将转换到 P rocessNOAAData 状态以处理天气数据。
示例项目最终过渡到减速器 Lambda 函数,对TemperatureFunction函数返回的结果进行最终聚合,并将结果写入 Amazon DynamoDB 桌子。
使用分布式 Map,一次最多可运行 1 万个并行子工作流。在此示例项目中,P Distributed Ma p 的最大并rocessNOAAData发度设置为 3000,从而将其限制为 3000 个并行子工作流程执行。
此示例项目创建状态机、支持 AWS 资源并配置相关IAM权限。探索此示例项目,了解如何使用分布式 Map 编排大规模并行工作负载,或将其作为您自己项目的起点。
重要
此示例项目仅在美国东部(弗吉尼亚州北部)区域可用。
第 1 步:创建状态机
-
打开 Step Functions 控制台
,然后选择创建状态机。 -
查找并选择要使用的入门模板。选择下一步以继续。
-
选择 “运行演示” 以创建只读和 ready-to-deploy工作流程,或者选择 “在其上构建” 以创建可编辑的状态机定义,您可以在此基础上构建并稍后部署。
-
选择使用模板继续进行选择。
后续步骤取决于之前的选择:
-
运行演示 — 您可以先查看状态机,然后再创建只读项目,并将资源部署 AWS CloudFormation 到您的 AWS 账户。
可以查看状态机定义,准备就绪后,选择部署并运行来部署项目并创建资源。
部署可能需要最长 10 分钟来创建资源和权限。可以在 AWS CloudFormation中使用堆栈 ID 链接来监控进度。
部署完成后,应该在控制台中看到新的状态机。
-
构建依据:可以查看和编辑工作流程定义。在尝试运行自定义工作流程之前,可能需要为示例项目中的占位符设置值。
注意
部署到您的账户的服务可能会收取标准费用。
第 2 步:运行状态机
在状态机页面上,选择您的示例项目。
在示例项目页面上,选择启动执行。
在启动执行对话框中,执行以下操作:
-
(可选)输入自定义执行名称,以便覆盖生成的默认执行名称。
非ASCII姓名和日志
Step Functions 接受状态机、执行、活动和包含非ASCII字符的标签的名称。由于此类字符不适用于亚马逊 CloudWatch,因此我们建议您仅使用ASCII字符,以便您可以跟踪中的指标 CloudWatch。
-
(可选)在输入框中,将输入值输入为JSON。如果您正在运行演示,则可以跳过此步骤。
-
选择启动执行。
Step Functions 控制台将引导您进入执行详细信息 页面,在该页面中,您可以在图表视图中选择状态来浏览步骤详细信息窗格中的相关信息。
-
恭喜您!
现在,您应该有一个正在运行的演示或者一个可以自定义的状态机定义。