使用分布式 Map 处理 Amazon S3 存储桶中的数据 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用分布式 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 步:创建状态机

  1. 打开 Step Functions 控制台,然后选择创建状态机

  2. 选择 “从模板创建”,然后找到相关的入门模板。选择下一步以继续。

  3. 选择如何使用模板:

    1. 运行演示 — 创建只读状态机。审核后,您可以创建工作流程和所有相关资源。

    2. 在此基础上构建 — 提供可编辑的工作流程定义,您可以使用自己的资源对其进行查看、自定义和部署。(相关资源,例如函数或队列,不会自动创建。)

  4. 选择使用模板继续进行选择。

    注意

    部署到您的账户的服务将收取标准费用。

第 2 步:运行演示状态机

如果您选择了 “运行演示” 选项,则所有相关资源都将部署并准备好运行。如果您选择了 B uild on it 选项,则可能需要先设置占位符值并创建其他资源,然后才能运行自定义工作流程。

  1. 选择 “部署并运行”

  2. 等待 Amazon CloudFormation 堆栈部署。这一过程耗时最多 10 分钟。

  3. 出现 “开始执行” 选项后,查看输入并选择 “开始执行”。

恭喜您!

现在,你应该有一个状态机的运行演示。您可以在图表视图中选择状态来查看输入、输出、变量、定义和事件。