AWS Step Functions 中状态之间的通信

Communication between states in AWS Step Functions

在 AWS Step Functions 中,我可以创建一个状态机(工作流),其中每个状态都是一个 AWS Lambda 函数。每个状态(即 Lambda 函数)的输入和输出是一个从前一个状态传递到下一个状态的 JSON 对象。我想知道 AWS Step Functions 编排器是否将此 JSON 传递到每个状态并从每个状态接收。也就是说,工作流的状态(Lambda 函数)之间没有实际通信,而是始终在编排器和每个状态(Lambda 函数)之间进行通信。对吗?

提前致谢!

AWS 中的一切都是事件驱动的 - 这些事件采用 JSON 对象的形式。当状态机 returns 中的给定 Lambda 调用时,根据状态机定义的结构,它要么将其结果作为新键附加到原始输入事件,要么创建一个新的 Json 对象使用从状态机定义中定义的密钥并丢弃原始事件,或者从调用响应中选择一个密钥(假设它采用 json 格式),它可以附加或替换到原始事件。

然后该事件被定向到状态机中的下一个任务 - 是 lambda 或 API 调用,或者选择或并行或其他。该事件直接传递到下一个任务 - 例如,如果它是一个 Lambda,Lambda Hander 函数将接收事件(连同状态机特定的上下文对象),该事件将由 lambda 处理,无论您如何编码它。

为了更深入地探讨您的问题,我认为您要问的是这是否是一个事件的流程:

Lambda -> State Machine systems -> Lambda -> State Machine Systems -> ect

或者如果它:

State Machine (Lambda -> Lambda -> ect)

正式?这是第一个版本。 Lambda 的设计理念是它们将是无状态的——并且不会从其他 lambda 调用或它们自己的调用中调用信息(实际上它不是那么完美,但那是另一个话题)。状态机被专门称为是因为它们管理 Lambda 调用之间的数据“状态”。所以是的,他们正在处理 lambda 之间的数据。

In Practice? ....它是什么并不重要。除了我提到的上述操作之外,您不能指示状态机对事件执行任何操作 - 这些操作在状态机定义中设置。除了通过在部署时定义时设置之外,您无权访问将执行上面示例中描述的处理的状态机后端。

所以虽然官方流程 第一个版本 - 状态机确实接收事件,操纵它,然后将它传递给下一个 lambda - 实际上它不会' 改变您作为开发人员与系统交互的方式。