用于 Step Functions 工作流程的 Amazon States 语言中的状态机结构 - AWS Step Functions

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

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

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

Comment(可选)

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

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(必填)

状态的类型。

Next

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

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

End

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

Comment(可选)

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

InputPath(可选)

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

OutputPath(可选)

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