本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
状态机数据
状态机数据采用以下形式:
-
状态机的初始输入
-
在状态之间传递的数据
-
状态机的输出
此部分介绍在 Amazon Step Functions 中状态机数据的格式及如何使用。
数据格式
状态机数据由 JSON 文本表示。您可以使用 JSON 支持的任何数据类型向状态机提供值。
状态机输入/输出
您可以通过以下两种方式之一将初始输入数据提供给Amazon Step Functions状态机。您可以在开始执行时将数据传递给StartExecution
操作。您也可以从 Ste p Functions 控制台StartAt
状态。如果未提供输入,默认值为空对象 ({}
)。
执行的输出由最后一个状态 (terminal
) 返回。此输出以 JSON 文本形式显示在执行结果中。
对于标准工作流程,您可以使用外部调用者(例如DescribeExecution
操作)从执行历史中检索执行结果。您可以在 Ste p Functions 控制台
对于 Express Workflows,如果您启用了日志记录,则可以从 CloudWatch 日志中检索结果,或者在 Step Functions 控制台中查看和调试执行。有关更多信息,请参阅 使用日志进行 CloudWatch 记录 和 在 Step Functions 控制台上查看和调试执行。
你还应该考虑与你的状态机相关的配额。有关更多信息,请参阅配额
状态输入/输出
每个状态的输入包含来自前一个状态的 JSON 文本,对于 StartAt
状态来说,是对执行的输入。某些流控制状态的输出与输入相同。
在以下示例中,状态机将两个数字加到一起。
-
定义 Amazon 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 函数将计算结果返回到状态。
状态在其输出中返回以下值。
{ "result": 7 }
由于
Add
还是状态机中的最后一个状态,此值作为状态机的输出返回。如果最后一个状态未返回输出,则状态机返回空对象 (
{}
)。
有关更多信息,请参阅Step Functions 值和输出的处理。