本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用分布式 Map 处理 Amazon S3 存储桶中的数据
此示例项目演示了如何使用分布式 Map 状态 来处理大规模数据,例如,分析历史天气数据并确定每月地球上平均温度最高的气象站。天气数据记录在 1.2 万多个 CSV 文件中,这些文件又存储在 Amazon S3 存储桶中。
此示例项目包括两个名为 “分布式 S3 副本 NOA 数据和进程 NOAAData” 的分布式地图状态。分布式 S3 副本 NOA 数据会迭代名noaa-gsod-pds为的 Amazon S3 公共存储桶中的 CSV 文件,并将它们复制到您的中的 Amazon S3 存储桶中。 Amazon Web Services 账户流程对复制的文件NOAAData进行迭代,并包括用于执行温度分析的 Lambda 函数。
示例项目首先通过调用 ListObjectsV2 API 操作来检查 Amazon S3 存储桶的内容。根据响应此调用返回的密钥数量,示例项目会做出以下决定之一:
-
如果密钥计数大于或等于 1,则项目将转换到 “进程” NOAAData 状态。此分布式地图状态包括 Lambda 名为TemperatureFunction的函数用于查找每月平均温度最高的气象站。此函数返回一个以
year-month
为密钥的目录和一个包含将气象站相关信息作为值的目录。 -
如果返回的密钥计数不超过 1,则分布式 S3 副本 NOA 数据状态将列出公共存储桶中的所有对象,noaa-gsod-pds并以 100 个为一批迭代地将各个对象复制到您账户中的另一个存储桶。内联 Map 会执行对象的迭代复制。
复制完所有对象后,项目将过渡到处理NOAAData状态以处理天气数据。
示例项目最终过渡到减速器 Lambda 函数,对TemperatureFunction函数返回的结果进行最终聚合,并将结果写入 Amazon DynamoDB 桌子。
使用分布式 Map,一次最多可运行 1 万个并行子工作流。在此示例项目中,Process Distribute d Map 的最大并NOAAData发度设置为 3000,从而将其限制为 3000 个并行子工作流程执行。
此示例项目创建状态机、支持 Amazon 资源并配置相关的 IAM 权限。探索此示例项目,了解如何使用分布式 Map 编排大规模并行工作负载,或将其作为您自己项目的起点。
重要
此示例项目仅在美国东部(弗吉尼亚州北部)区域可用。
第 1 步:创建状态机
-
打开 Step Functions 控制台
,然后选择创建状态机。 -
选择 “从模板创建”,然后找到相关的入门模板。选择下一步以继续。
-
选择如何使用模板:
-
运行演示 — 创建只读状态机。审核后,您可以创建工作流程和所有相关资源。
-
在此基础上构建 — 提供可编辑的工作流程定义,您可以使用自己的资源对其进行查看、自定义和部署。(相关资源,例如函数或队列,不会自动创建。)
-
-
选择使用模板继续进行选择。
注意
部署到您的账户的服务将收取标准费用。
第 2 步:运行演示状态机
如果您选择了 “运行演示” 选项,则所有相关资源都将部署并准备好运行。如果您选择了 B uild on it 选项,则可能需要先设置占位符值并创建其他资源,然后才能运行自定义工作流程。
选择 “部署并运行”。
等待 Amazon CloudFormation 堆栈部署。这一过程耗时最多 10 分钟。
出现 “开始执行” 选项后,查看输入并选择 “开始执行”。
恭喜您!
现在,你应该有一个状态机的运行演示。您可以在图表视图中选择状态来查看输入、输出、变量、定义和事件。