在 Step Functions 中处理输入和输出 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Step Functions 中处理输入和输出

使用变量管理状态和 JSONata

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

要了解更多信息,请阅读博客文章 “使用变量简化开发者体验 JSONata ” 和 Amazon Step Functions

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

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

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

QueryLanguage 推荐

对于新的状态机,我们建议使用 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,以下字段控制从一个状态到另一个状态的数据流:InputPathParametersResultSelectorResultPath、和OutputPath。每个 JSONPath 字段都可以在 JSON 在工作流程中的每个状态中移动时对其进行操作。

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

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

筛选器顺序: InputPath、参数 ResultSelector、 ResultPath、和 OutputPath。