本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用于 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
时,指定此状态作为终端状态(结束执行)。每个状态机可以有任意数量的终端状态。在一个状态中只能使用一个Next
或End
。某些状态类型(例如Choice
)或终端状态(例如 成功的工作流程状态 和 失败工作流状态 )不支持或使用End
字段。 -
Comment
(可选) -
保存状态的人类可读格式的描述。
-
InputPath
(可选) -
一个路径,用于选择要传递到状态任务进行处理的状态输入的一部分。如果省略,它的值为
$
,表示指定整个输入。有关更多信息,请参阅输入和输出处理。 -
OutputPath
(可选) -
一个路径,用于选择要传递到下一个状态的状态输出的一部分。如果省略,它的值为
$
,表示指定整个输出。有关更多信息,请参阅输入和输出处理。