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

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

状态机结构

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