选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在 Step Functions 中使用工作流程工作室配置状态输入和输出

聚焦模式
在 Step Functions 中使用工作流程工作室配置状态输入和输出 - AWS Step Functions

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

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

管理状态和转换数据

每个状态都根据接收的输入做出决定或执行操作。在大多数情况下,该状态会将输出传递到其他状态。在 Workflow Studio 中,可以在 检查器面板 面板的输入输出选项卡中配置状态如何筛选和操作其输入和输出数据。配置输入和输出时,使用信息链接访问上下文帮助。

显示状态输入、输出和信息帮助面板的说明性屏幕截图

有关 Step Functions 如何处理输入和输入的详细信息,请参阅 在 Step Functions 中处理输入和输出

配置状态的输入

每个状态都以 JSON 形式接收来自前一个状态的输入。如果要筛选输入,可以使用 检查器面板 面板中输入选项卡下的 InputPath 筛选条件。InputPath 是一个以 $ 开头的字符串,用于标识特定 JSON 节点。它们被称为引用路径,它们遵循 JsonPath 语法。

要筛选输入,请进行以下操作:

  • 选择 “筛选输入” InputPath。

  • JsonPathInputPath筛选器输入有效的值。例如,$.data

InputPath 筛选条件将添加到您的工作流中。

例 示例 1:在工作流工作室中使用 InputPath 过滤器

假设状态的输入包含以下 JSON 数据。

{ "comment": "Example for InputPath", "dataset1": { "val1": 1, "val2": 2, "val3": 3 }, "dataset2": { "val1": "a", "val2": "b", "val3": "c" } }

要应用InputPath过滤器,请选择 “筛选输入” InputPath,然后输入相应的参考路径。如果您输入 $.dataset2.val1,则以下 JSON 将作为输入传递给状态。

{"a"}

参考路径也可以选择值。如果您引用的数据是 { "a": [1, 2, 3, 4] },并且您应用引用路径 $.a[0:2] 作为 InputPath 筛选条件,则结果如下。

[ 1, 2 ]

Parallel 工作流程状态Map 状态工作流程。Pass 工作流程状态 流状态在其输入选项卡下还有一个名为 Parameters 的输入筛选选项。此过滤器在过滤 InputPath 器之后生效,可用于构造由一个或多个键值对组成的自定义 JSON 对象。每对的值可以是静态值,可从输入中选择,也可通过路径从在 Step Functions 中从 Context 对象访问执行数据 中选择。

注意

要指定参数使用引用路径指向输入中的 JSON 节点,请使用 .$ 作为参数名称的结尾。

例 示例 2:为 Parallel 状态创建自定义 JSON 输入

假设以下 JSON 数据是一个 Parallel 状态的输入。

{ "comment": "Example for Parameters", "product": { "details": { "color": "blue", "size": "small", "material": "cotton" }, "availability": "in stock", "sku": "2317", "cost": "$23" } }

要选择该输入的一部分并传递带有静态值的附加键值对,可以在 Parallel 状态的输入选项卡下的参数字段中指定以下内容。

{ "comment": "Selecting what I care about.", "MyDetails": { "size.$": "$.product.details.size", "exists.$": "$.product.availability", "StaticValue": "foo" } }

结果将是以下 JSON 数据。

{ "comment": "Selecting what I care about.", "MyDetails": { "size": "small", "exists": "in stock", "StaticValue": "foo" } }

配置状态的输出

每个状态都会生成 JSON 输出,可以在将其传递到下一个状态之前对其进行筛选。有几个筛选条件可用,每个筛选条件对输出的影响都不一样。每种状态可用的输出筛选条件列在 Inspector 面板的输出选项卡下。对于 Task 工作流程状态 状态,您选择的任何输出筛选条件都将按以下顺序处理:

  1. ResultSelector:使用此筛选条件来操纵状态的结果。您可以使用部分结果构造一个新的 JSON 对象。

  2. 在 Step Functions ResultPath 中使用指定状态输出:使用此筛选条件选择要传递到输出的状态输入和任务结果的组合。

  3. 使用过滤状态输出 OutputPath:使用此筛选条件筛选 JSON 输出,用于选择将结果中的哪些信息传递到下一个状态。

使用 ResultSelector

ResultSelector 是用于以下状态的可选输出筛选条件:

ResultSelector 可用于构造由一个或多个键值对组成的自定义 JSON 对象。每对值可以是静态值,也可以通过路径从状态的结果中选择。

注意

要指定参数使用路径引用结果中的 JSON 节点,请使用 .$ 作为参数名称的结尾。

例 使用 ResultSelector 过滤器的示例

在此示例中,您可以使用ResultSelector操作亚马逊 EMR CreateCluster API 调用对亚马逊 EMR 状态的响应。CreateCluster以下是 Amazon EMR CreateCluster API 调用的结果。

{ "resourceType": "elasticmapreduce", "resource": "createCluster.sync", "output": { "SdkHttpMetadata": { "HttpHeaders": { "Content-Length": "1112", "Content-Type": "application/x-amz-JSON-1.1", "Date": "Mon, 25 Nov 2019 19:41:29 GMT", "x-amzn-RequestId": "1234-5678-9012" }, "HttpStatusCode": 200 }, "SdkResponseMetadata": { "RequestId": "1234-5678-9012" }, "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }

要选择部分信息并传递带有静态值的附加键值对,请在状态的 “输出” 选项卡下的ResultSelector字段中指定以下内容。

{ "result": "found", "ClusterId.$": "$.output.ClusterId", "ResourceType.$": "$.resourceType" }

使用 ResultSelector 会产生以下结果。

{ "result": "found", "ClusterId": "AKIAIOSFODNN7EXAMPLE", "ResourceType": "elasticmapreduce" }

使用 ResultPath

状态的输出可以是状态输入的副本、状态生成的结果或状态输入和结果的组合。使用 ResultPath 可控制传递到状态输出的上述两种内容的组合。有关更多 ResultPath 的用例,请参阅 在 Step Functions ResultPath 中使用指定状态输出

ResultPath 是用于以下状态的可选输出筛选条件:

ResultPath 可用于将结果添加到原始状态输入中。指定的路径表示添加结果的位置。

例 使用 ResultPath 过滤器的示例

假设以下是一个 Task 状态的输入。

{ "details": "Default example", "who": "AWS Step Functions" }

该 Task 状态的结果为以下内容。

Hello, AWS Step Functions

您可以通过应用 ResultPath 并输入指示在何处添加结果的参考路径,来将此结果添加到该状态的输入中,例如 $.taskresult

借助此 ResultPath,以下是作为状态输出传递的 JSON。

{ "details": "Default example", "who": "AWS Step Functions", "taskresult": "Hello, AWS Step Functions!" }

使用 OutputPath

OutputPath 筛选条件可用于筛选掉不需要的信息,而仅传递您需要的这部分 JSON。OutputPath 是一个以 $ 开头的字符串,用于标识 JSON 文本中的节点。

例 使用 OutputPath 过滤器的示例

假设一个 Lambda 调用 API 调用除了返回 Lambda 函数的结果之外,还返回元数据。

{ "ExecutedVersion": "$LATEST", "Payload": { "foo": "bar", "colors": [ "red", "blue", "green" ], "car": { "year": 2008, "make": "Toyota", "model": "Matrix" } }, "SdkHttpMetadata": { "AllHttpHeaders": { "X-Amz-Executed-Version": ["$LATEST"] ...

您可以使用 OutputPath 筛选掉其他元数据。默认情况下,通过 Workflow Studio 创建的 Lambda Invoke 状态OutputPath筛选器的值为。$.Payload此默认值会删除额外的元数据,并返回相当于直接运行 Lambda 函数的输出。

Lambda 调用任务结果示例和输出筛选条件的 $.Payload 值将以下 JSON 数据作为输出传递。

{ "foo": "bar", "colors": [ "red", "blue", "green" ], "car": { "year": 2008, "make": "Toyota", "model": "Matrix" } }
注意

OutputPath 筛选条件是最后一个生效的输出筛选条件,因此,如果您使用诸如 ResultSelectorResultPath 之类的其它输出筛选条件,则应相应地修改 OutputPath 筛选条件的 $.Payload 默认值。

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。