

# 管理 Lambda 工作流程和事件
<a name="workflow-event-management"></a>

使用 Lambda 构建无服务器应用程序时，通常需要一些编排函数执行和处理事件的方法。Amazon 提供了几条协调 Lambda 函数的方法：
+ [Lambda 持久性函数](durable-functions.md)，用于在 Lambda 中进行代码优先的工作流编排
+ 用于跨多个服务进行可视化工作流编排的 Amazon Step Functions
+ 用于事件驱动型架构和计划的 Amazon EventBridge 调度器和 Amazon EventBridge

您也可以将这些方法整合在一起。例如，您可以使用 EventBridge 调度器在特定事件发生时触发持久性函数 Step Functions 工作流程，或者配置工作流程，在定义的执行点处将事件发布到 EventBridge 调度器。本节的以下主题将详细说明如何使用这些编排选项。

## 具有持久性函数的代码优先编排
<a name="durable-functions-orchestration"></a>

Lambda 持久性函数提供了一种代码优先的工作流程编排方法，使您能够直接在 Lambda 函数中构建有状态、长时间运行的工作流程。与外部编排服务不同，持久性函数将您的工作流程逻辑保留在代码中，以便可以更轻松地与业务逻辑一起进行版本控制、测试和维护。

持久性函数在以下情况下尤为适用：
+ **使用标准编程语言：**使用熟悉的编程语言（如 JavaScript 和 Python）定义工作流
+ **长时间运行的进程：**执行可运行最长一年的工作流程，远远超过标准 Lambda 函数的 15 分钟限制
+ **简化开发：**将工作流程逻辑和业务逻辑保存在同一个代码库中，以便于维护和测试
+ **经济高效的等待：**在等待状态期间暂停执行，同时不消耗计算资源
+ **内置状态管理：**无需外部存储配置即可实现自动检查点存储和状态持久化功能

有关在持久性函数和 Step Functions 之间进行选择的帮助，请参阅[持久性函数或 Step Functions](durable-step-functions.md)。

有关持久性函数的更多信息，请参阅 [Lambda 持久性函数](durable-functions.md)。

## 使用 Step Functions 编排工作流程
<a name="orchestrating-workflows"></a>

Amazon Step Functions 是一项工作流程编排服务，可帮助将多个 Lambda 函数和其他 Amazon 服务整合成结构化的工作流程。这些工作流程可以保持状态，使用复杂的重试机制处理错误，以及大规模处理数据。

Step Functions 提供两种类型的工作流程来满足不同的编排需求：

**标准工作流**  
适用于需要精确执行一次语义的长期运行且可审计的工作流程。标准工作流最长可以运行一年，并提供详细的执行历史记录和支持可视化调试。标准工作流适用于订单履行、数据处理管道或多步骤分析作业等流程。

**快速工作流**  
专为至少执行一次语义的高事件率、短历时的工作负载而设计。快速工作流最长可以运行五分钟，非常适合高容量事件处理、流数据转换或 IoT 数据摄取场景。与标准工作流相比具有更高的吞吐量和更低的成本。

**注意**  
有关 Step Functions 工作流程类型的更多信息，请参阅[选择 Step Functions 中的工作流程类型](https://docs.amazonaws.cn/step-functions/latest/dg/choosing-workflow-type.html)。

在这些工作流程中，Step Functions 为并行处理提供了两种类型的 Map 状态：

**内联 Map**  
在父工作流程的执行历史记录中处理来自 JSON 数组的项目。内联 Map 最多支持 40 次并发迭代，适用于较小的数据集或需要在一次执行中进行所有处理的情况。有关更多信息，请参阅[在内联模式下使用 Map 状态](https://docs.amazonaws.cn/step-functions/latest/dg/amazon-states-language-map-state.html)。

**分布式 Map**  
通过迭代超过 256 KiB 的数据集或需要 40 多次并发迭代的数据集，支持处理大规模并行工作负载。分布式 Map 支持执行多达 10,000 个并行子工作流程，擅长处理存储在 Amazon S3 中的半结构化数据，例如 JSON 或 CSV 文件，这使其非常适合批处理和 ETL 操作。有关更多信息，请参阅[在分布式模式下使用 Map 状态](https://docs.amazonaws.cn/step-functions/latest/dg/state-map-distributed.html)。

通过将这些工作流类型和 Map 状态相结合，Step Functions 提供了一个灵活而强大的工具集来编排复杂的无服务器应用程序，从小规模操作到大规模数据处理管道等。

要开始使用 Lambda 和 Step Functions，请参阅[使用 Step Functions 编排 Lambda 函数](with-step-functions.md)。

## 使用 EventBridge 和 EventBridge 调度器管理事件
<a name="managing-events"></a>

Amazon EventBridge 是一项事件总线服务，可帮助您构建事件驱动的架构。它在 Amazon 服务、集成应用程序和软件即服务（SaaS）应用程序之间路由事件。EventBridge 调度器是一个无服务器调度器，支持从一个中央服务创建、运行和管理任务，使您能够使用 cron 和 rate 表达式计划调用 Lambda 函数，或者配置一次性调用。

Amazon EventBridge 和 EventBridge 调度器可帮助您使用 Lambda 构建事件驱动的架构。EventBridge 在 Amazon 服务、集成应用程序和 SaaS 应用程序之间路由事件，而 EventBridge 调度器则提供了特定的计划功能，可定期或一次性调用 Lambda 函数。

这些服务为使用 Lambda 函数提供了多种重要功能：
+ 使用 EventBridge 创建规则，将事件匹配并路由至 Lambda 函数
+ 使用 EventBridge 调度器通过 cron 和 rate 表达式设置定期函数调用
+ 配置在特定日期和时间进行一次性函数调用
+ 为计划的调用定义灵活的时间段和重试策略

有关更多信息，请参阅 [按计划调用 Lambda 函数](with-eventbridge-scheduler.md)。