在 Step Functions 中处理输入和输出 - AWS Step Functions

在 Step Functions 中处理输入和输出

使用变量和 JSONata 管理状态

Step Functions 最近添加了变量和 JSONata 来管理状态和转换数据。

要了解更多信息,请阅读博客文章使用 AWS Step Functions 中的变量和 JSONata 简化开发人员体验

当 Step Functions 执行收到 JSON 输入时,它会将该数据传递到工作流中的第一个状态作为输入。

使用 JSONata,您可以从 $states.input 检索状态输入。您的状态机执行还会在 Context 对象 中提供该初始输入数据。您可以在工作流中的任意步骤从 $states.context.Execution.Input 中检索原始状态机输入。

当状态退出时,其输出可用于状态机中的下一个状态。除非您修改状态输出,否则默认情况下,您的状态输入将作为状态输出来传递。对于后续步骤中可能需要的数据,可以考虑将其存储在变量中。有关更多信息,请参阅使用变量在状态之间传递数据

查询语言建议

对于新状态机,我们建议使用 JSONata 查询语言。在未指定查询语言的状态机中,为了向后兼容,状态机默认为 JSONPath。您必须为状态机或单个状态选择使用 JSONata。

使用 JSONata 处理输入和输出

使用 JSONata 表达式时,您可以选择和转换数据。在 Arguments 字段中,您可以自定义发送给操作的数据。结果可以在 Output 字段中转换为自定义状态输出。您也可以将数据存储在 Assign 字段的变量中。有关更多信息,请参阅使用 JSONata 转换数据

下图显示 JSON 信息如何在 JSONata 任务状态中流转。

Diagram showing JSONata task state flow with input, arguments, output, and action components.

使用 JSONPath 处理输入和输出

管理状态和转换数据

对于使用 JSONPath 的状态机,以下字段控制从一个状态到另一个状态的数据流:InputPathParametersResultSelectorResultPathOutputPath。每个 JSONPath 字段均可在 JSON 经过工作流中的每个状态时操纵 JSON。

JSONPath 字段可以使用路径从输入或结果中选择 JSON 的某些部分。路径是以 $ 开头的字符串,标识 JSON 文本内的节点。Step Functions 路径使用 JsonPath 语法。

下图显示 JSON 信息如何在 JSONPath 任务状态中流转。InputPath 选择要传递给 Task 状态任务的 JSON 输入部分(例如,AWS Lambda 函数)。您可以调整在 Parameters 字段中发送给操作的数据。然后,借助 ResultSelector,您可以选择要转移的操作结果部分。ResultPath 然后选择要传递给输出的状态输入和任务结果的组合。OutputPath 可以筛选 JSON 输出以进一步限制传递给输出的信息。

筛选条件顺序:InputPath、Parameters、ResultSelector、ResultPath 和 OutputPath。