使用 ResultSelector、ResultPath 和 OutputPath 筛选条件配置输出 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 ResultSelector、ResultPath 和 OutputPath 筛选条件配置输出

WorkflowInputOutput 状态机中调用 check-address Lambda 函数时,该函数将在执行地址验证后返回输出有效负载。在执行详细信息页面上,选择验证地址步骤,然后在步骤详细信息窗格的任务结果中查看输出有效负载。

{ "ExecutedVersion": "$LATEST", "Payload": { "statusCode": 200, "body": "{\"approved\":true,\"message\":\"identity validation passed\"}" }, "SdkHttpMetadata": { "AllHttpHeaders": { "X-Amz-Executed-Version": [ "$LATEST" ], ... ... "StatusCode": 200 }

使用 ResultSelector

现在,如果您需要向工作流中的以下状态提供身份和地址验证结果,则可以在输出 JSON 中选择 Payload.body 节点,然后使用 ResultSelector 筛选条件中的 StringToJson 内置函数根据需要格式化数据。

ResultSelector 从任务输出中选择所需的内容。在以下示例中,ResultSelector 获取 $.Payload.body 中的字符串,并应用 States.StringToJson 内置函数将该字符串转换为 JSON,并将生成的 JSON 放入身份节点中。

"ResultSelector": { "identity.$": "States.StringToJson($.Payload.body)" }

结果会创建以下 JSON 数据。

{ "identity": { "approved": true, "message": "Identity validation passed" } }

在使用这些输入和输出筛选条件时,您还可能会遇到因指定了无效的 JSON 路径表达式而导致的运行时错误。有关更多信息,请参阅。

使用 ResultPath

您可以使用 ResultPath 字段在初始输入有效负载中指定一个位置,来保存状态的任务处理结果。如果您未指定 ResultPath,则采用默认值 $,这会导致初始输入有效负载被原始任务结果替换。如果指定 ResultPathnull,则原始结果将被丢弃,初始输入有效负载将成为有效输出。

如果您对使用 ResultSelector 字段创建的 JSON 数据应用 ResultPath 字段,任务结果将添加到输入有效负载的结果节点内,如以下示例所示:

{ "data": { "firstname": "Jane", "lastname": "Doe", "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "address": { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }, "results": { "identity": { "approved": true } } }

使用 OutputPath

在应用 ResultPath 之后,您可以选择状态输出的一部分以传递到下一个状态。这可让您筛选出不需要的信息,并且仅传递所需的 JSON 部分。

在以下示例中,OutputPath 字段将状态输出保存在结果节点内:"OutputPath": "$.results"。因此,该状态的最终输出可以传递到下一个状态,如下所示:

{ "addressResult": { "approved": true, "message": "address validation passed" }, "identityResult": { "approved": true, "message": "identity validation passed" } }

使用控制台特征可视化输入和输出数据流

您可以使用 Step Functions 控制台的数据流模拟器或“执行详细信息”页面中的“高级”视图选项,直观显示工作流中各状态之间的输入和输出数据流。