此部分介绍在 AWS Step Functions 中状态机数据的格式及如何使用。
状态机数据由 JSON 文本表示。您可以使用 JSON 支持的任何数据类型向状态机提供值。
您可以通过以下两种方式之一将初始输入数据提供给 AWS Step Functions 状态机。开始执行时,可以将数据传递给一个
StartExecution
操作。您也可以从
Step Functions 控制台
将数据传递到状态机。初始数据传递到状态机的
StartAt
状态。如果未提供输入,默认值为空对象 (
{
}
)。
执行的输出由最后一个状态 (
terminal
) 返回。此输出以 JSON 文本形式显示在执行结果中。
对于标准工作流,您可以使用外部调用方(例如,在
DescribeExecution
操作中),从执行历史记录中检索执行结果。您可以在
Step Functions 控制台
上查看执行结果。
对于快速工作流,如果您启用了日志记录,则可以从 CloudWatch Logs 中检索结果,或者在 Step Functions 控制台中查看和调试执行。有关更多信息,请参阅
使用 CloudWatch Logs 进行日志记录
和
在 Step Functions 控制台上查看和调试执行
。
您还应该考虑与状态机相关的配额。有关更多信息,请参阅
配额
。
每个状态的输入包含来自前一个状态的 JSON 文本,对于
StartAt
状态来说,是对执行的输入。某些流控制状态的输出与输入相同。
在以下示例中,状态机将两个数字加到一起。
定义 AWS Lambda 函数。
function Add(input) {
var numbers = JSON.parse(input).numbers;
var total = numbers.reduce(
function(previousValue, currentValue, index, array) {
return previousValue + currentValue; });
return JSON.stringify({ result: total });
定义状态机。
"Comment": "An example that adds two numbers together.",
"StartAt": "Add",
"Version": "1.0",
"TimeoutSeconds": 10,
"States":
"Add": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:Add",
"End": true
使用以下 JSON 文本开始执行。
{ "numbers": [3, 4] }
Add
状态接收 JSON 文本并将其传递到 Lambda 函数
Lambda 函数将计算结果返回给状态。
状态在其输出中返回以下值。