Amazon States Language 中用于 Step Functions 工作流程的状态机结构 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon States Language 中用于 Step Functions 工作流程的状态机结构

管理状态和转换数据

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

了解如何使用变量传递数据使用转换数据JSONata

状态机是使用表示包含以下字段的结构的JSON文本来定义的。

Comment(可选)

一个人类可读格式的状态机描述。

QueryLanguage(可选;省略时,默认为JSONPath
  • 状态机使用的查询语言的名称。支持的值包括 JSONPathJSONata

  • 如果未为状态机提供,则每个状态的默认值为JSONPath。

  • 当顶级状态机查询语言为时JSONPath,各个状态可以通过设置为 QueryLanguage 来覆盖查询语言JSONata。有了这种方法,你可以逐渐将状态机从JSONPathJSONata一个状态转换为一个状态。

  • 注意:您不能将JSONata基于顶层的状态机恢复为JSONata和JSONPath状态的混合。

StartAt (必需)

一个字符串,必须与某个状态对象的名称完全匹配(区分大小写)。

TimeoutSeconds(可选)

状态机执行可运行的最大秒数。如果运行时间超过指定时间,则执行失败并返回 States.Timeout 错误名称

Version(可选)

状态机中使用的 Amazon States Language 版本(默认为“1.0”)。

States (必需)

一个对象,其中包含逗号分隔的状态集合。

States 字段包含状态

{ "State1" : { }, "State2" : { }, ... }

状态机由其包含的状态以及状态之间的关系所定义。

示例如下:

{ "Comment": "A Hello World example of the Amazon States Language using a Pass state", "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Pass", "Result": "Hello World!", "End": true } } }

启动此状态机的执行时,系统从 StartAt 字段中引用的状态开始 ("HelloWorld")。如果此状态有一个 "End": true 字段,则执行停止并返回结果。否则,系统会查找 "Next": 字段并使用下一个状态继续。此过程不断重复,直至系统达到最终状态 ("Type": "Succeed""Type": "Fail""End": true 状态) 或者出现运行时错误。

以下规则适用于状态机中的状态:

  • 状态在封闭块中可以按任意顺序出现,但它们列出的顺序不会影响到它们的运行顺序。运行顺序由状态的内容决定。

  • 在状态机中,只能有一个状态指定为 start 状态,由顶级结构中 StartAt 字段的值指定。此状态是在执行启动时首先执行的状态。

  • End 字段为 true 的任意状态将被视为 end(或 terminal)状态。根据状态机逻辑(例如状态机有多个执行分支),您可能会有多个 end 状态。

  • 如果状态机只包含一个状态,该状态可以为 start 状态和 end 状态。

工作流程中的常用状态字段

以下字段对所有状态元素是通用的。

Type (必需)

状态的类型。

QueryLanguage(可选;省略时,默认为JSONPath
  • 该州使用的查询语言的名称。支持的值包括 JSONPathJSONata

  • 当顶级状态机查询语言为时JSONPath,各个状态可以通过设置为 QueryLanguage 来覆盖查询语言JSONata。有了这种方法,你可以逐渐将状态机从JSONPathJSONata一个状态转换为一个状态。

Next

当前状态完成时将运行的下一个状态的名称。某些状态类型 (例如 Choice) 允许多个转换状态。

如果当前状态是工作流中的最后一个状态或终端状态(例如 Succeed 工作流程状态Fail 工作流程状态),则无需指定 Next 字段。

End

在设置为 true 时,指定此状态作为终端状态(结束执行)。每个状态机可以有任意数量的终端状态。在一个状态中只能使用一个 NextEnd。某些状态类型(例如 Choice)或终端状态(例如 Succeed 工作流程状态Fail 工作流程状态 )不支持或使用 End 字段。

Comment(可选)

保存状态的人类可读格式的描述。

Assign(可选)

用于存储变量。该Assign字段接受具有键/值对的JSON对象,这些键/值对定义变量名及其分配的值。任何字符串值,包括对象或数组内部的值,都将按照被{% %}字符包围JSONata时的计算方式进行计算

有关更多信息,请参阅 使用变量在状态之间传递数据

Output(JSONata仅限可选)

用于指定和转换状态的输出。指定后,该值将覆盖状态输出默认值。

输出字段接受任何JSON值(对象、数组、字符串、数字、布尔值、空)。任何字符串值,包括对象或数组内部的字符串值,都将被计算为JSONata被 {%%} 个字符包围。

输出也直接接受JSONata表达式,例如:“输出”:“{% jsonata expression%}”

有关更多信息,请参阅输入和输出处理

InputPath(JSONPath仅限可选)

一个路径,用于选择要传递到状态任务进行处理的状态输入的一部分。如果省略,它的值为 $,表示指定整个输入。有关更多信息,请参阅输入和输出处理

OutputPath(JSONPath仅限可选)

一个路径,用于选择要传递到下一个状态的状态输出的一部分。如果省略,它的值为 $,表示指定整个输出。有关更多信息,请参阅输入和输出处理