状态机结构 - AWS Step Functions

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

状态机结构

状态机使用 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 状态。