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

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

路径

在 Amazon States Language 中,路径是以 $ 开头的字符串,您可使用该字符串来标识 JSON 文本中的组件。路径遵循JsonPath语法。在指定 InputPathResultPathOutputPath 的值时,可以指定访问输入子集的路径。有关更多信息,请参阅 Step Functions 中的输入和输出处理

注意

您还可以使用状态定义的 Parameters 字段中的路径指定输入或上下文对象的 JSON 节点。请参阅 将参数传递给服务 API

如果您的字段名包含任何未包含在 JsonPath ABNF 规则member-name-shorthand定义中的字符,则必须使用方括号表示法。因此,要对标点符号(不包括_)等特殊字符进行编码,必须使用方括号表示法。例如,$.abc.['def ghi']

引用路径

引用路径 是一种语法存在限制的路径,它只能标识 JSON 结构中的单个节点:

  • 您可以使用句点 (.) 和方括号 ([ ]) 表示法访问对象字段。

  • 不支持像 length() 这样的函数。

  • 不支持非符号的词法运算符,例如 subsetof

  • 不支持按正则表达式或引用 JSON 结构中的其他值进行筛选。

  • 与筛选条件中正在处理的当前节点相匹配的 @ 运算符与标量值不匹配。该运算符只匹配对象。

例如,如果状态输入数据包含以下值:

{ "foo": 123, "bar": ["a", "b", "c"], "car": { "cdr": true }, "jar": [{"a": 1}, {"a": 5}, {"a": 2}, {"a": 7}, {"a": 3}] }

以下引用路径将返回以下内容。

$.foo => 123 $.bar => ["a", "b", "c"] $.car.cdr => true $.jar[?(@.a >= 5)] => [{"a": 5}, {"a": 7}]

某些状态使用路径和引用路径来控制状态机的流,或者配置状态的设置或选项。有关更多信息,请参阅中的使用数据流模拟器对工作流输入和输出路径处理进行建模和有效使用 JSONPath。 Amazon Step Functions

展平由数组组成的数组

如果状态机中的 ParallelMap 状态返回由数组组成的数组,则可以使用 ResultSelector 字段将他们转换为一个平面数组。您可以将此字段包含在 Parallel 或 Map 状态定义中,以操纵这些状态的结果。

要展平数组,请在 ResultSelector 字段中使用 JMESPath 语法 [*],如下方的示例所示。

"ResultSelector": { "flattenArray.$": "$[*][*]" }

有关演示如何展平数组的示例,请参阅以下教程中的第 3 步