本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Step Functions 调用操作参考
执行以下操作的 Amazon CodePipeline 操作:
-
从您的管道启动 Amazon Step Functions 状态机执行。
-
通过操作配置中的属性或位于要作为输入传递的管道构件中的文件向状态机提供初始状态。
-
(可选)设置执行 ID 前缀以便标识源自操作的执行。
-
支持标准和快速状态机。
注意
Step Functions 操作在 Lambda 上运行,因此它的构件大小配额与 Lambda 函数的构件大小配额相同。有关更多信息,请参阅《Lambda 开发人员指南》中的 Lambda 配额。
Step Functions 的 CodePipeline 操作在中国(北京)和中国(宁夏)区域不可用。要参考其他可用操作,请参阅 产品和服务与 CodePipeline。
操作类型
-
类别:
Invoke
-
拥有者:
AWS
-
提供方:
StepFunctions
-
版本:
1
配置参数
- StateMachineArn
-
必需:是
要调用的状态机的 Amazon 资源名称 (ARN)。
- ExecutionNamePrefix
-
必需:否
默认情况下,操作执行 ID 将用作状态机执行名称。如果提供了前缀,则该前缀将追加到带连字符的操作执行 ID 的前面,共同用作状态机执行名称。
myPrefix-1624a1d1-3699-43f0-8e1e-6bafd7fde791
对于快速状态机,名称应只包含 0-9、A-Z、a-z、- 和 _。
- InputType
-
必需:否
-
Literal (文本)(默认值):在指定此项时,Input (输入) 字段中的值将直接传递到状态机输入。
选择文本时输入字段的输入项示例:
{"action": "test"}
-
FilePath:Input (输入) 字段指定的输入构件中文件的内容将用作状态机执行的输入。当 InputType 设置为 FilePath 时,需要输入构件。
选择文件路径时输入字段的输入项示例:
assets/input.json
-
- 输入
-
必需:条件
-
Literal (文本):当 InputType 设置为 Literal (文本)(默认值)时,此字段是可选的。
如果提供此项,则 Input (输入) 字段将直接用作状态机执行的输入。否则,将使用空 JSON 对象
{}
调用状态机。 -
FilePath:当 InputType 设置为 FilePath 时,此字段是必填的。
当 InputType 设置为 FilePath 时,也需要输入构件。
指定的输入构件中文件的内容将用作状态机执行的输入。
-
输入构件
-
构件数:
0 to 1
-
描述:如果 InputType 设置为 FilePath,则此构件是必需的,并且将用于寻找状态机执行输入的来源。
输出构件
-
构件数:
0 to 1
-
描述:
-
标准状态机:如果提供此项,则使用状态机的输出填充输出构件。这是在状态机执行成功完成后,从 Step Functions DescribeExecution API 响应的
output
属性中获得的。 -
快速状态机:不受支持。
-
输出变量
此操作会生成输出变量,该变量可由管道中下游操作的操作配置引用。
有关更多信息,请参阅 变量参考。
- StateMachineArn
-
状态机的 ARN。
- ExecutionArn
-
状态机的执行的 ARN。仅标准状态机。
操作配置示例
默认输入示例
文本输入示例
输入文件示例
行为
在发布期间,CodePipeline 会使用操作配置中指定的输入执行已配置的状态机。
当 InputType 设置为 Literal (文本) 时,Input (输入) 操作配置字段的内容将用作状态机的输入。如果未提供文本输入,则状态机执行将使用空的 JSON 对象 {}
。有关在没有输入的情况下运行状态机执行的更多信息,请参阅 Step Functions StartExecution API。
当 InputType 设置为 FilePath 时,此操作将解压缩输入构件,并使用 Input (输入) 操作配置字段中指定的文件内容作为状态机的输入。在指定 FilePath 时,Input (输入) 字段是必填的,并且输入构件必须存在;否则,操作将失败。
在成功启动执行后,两种状态机类型(标准 和快速)的行为将不同。
标准状态机
如果标准状态机执行成功启动,CodePipeline 将轮询 DescribeExecution
API,直到执行达到终端状态。如果执行成功完成,则操作将成功;否则,操作将失败。
如果配置了输出构件,则该构件将包含状态机的返回值。这是在状态机执行成功完成后,从 Step Functions DescribeExecution API 响应的 output
属性中获得的。请注意,此 API 上已强制实施输出长度限制。
错误处理
-
如果操作无法启动状态机执行,则操作执行将失败。
-
如果在 CodePipeline Step Functions 操作达到其超时值(默认为 7 天)之前,状态机执行无法达到终端状态,则操作执行将失败。尽管发生此失败,状态机也可能会继续运行。有关 Step Functions 中的状态机执行超时的更多信息,请参阅标准和快速工作流。
注意
您可以使用此操作请求增加账户的调用操作超时配额。但配额增加将应用到该账户的所有区域中此类型的所有操作。
-
如果状态机执行达到 FAILED、TIMED_OUT 或 ABORTED 终端状态,则操作执行失败。
快速状态机
如果快速状态机执行已成功启动,则表示调用操作执行已成功完成。
为快速状态机配置的操作的注意事项:
-
您无法指定输出构件。
-
操作不会等待状态机执行完成。
-
在 CodePipeline 中启动操作执行后,即使状态机执行失败,操作执行也会成功。
错误处理
-
如果 CodePipeline 无法启动状态机执行,则操作执行将失败。否则,操作将立即成功。无论状态机执行需要多长时间才能完成或其结果如何,CodePipeline 中的操作都将成功。
另请参阅
下列相关资源在您使用此操作的过程中会有所帮助。
-
Amazon Step Functions 开发者指南:有关状态机、执行和状态机输入的信息,请参阅 Amazon Step Functions 开发者指南。
-
教程:在管道中使用 Amazon Step Functions 调用操作:本教程将帮助您开始使用示例标准状态机,并说明如何使用控制台通过添加 Step Functions 调用操作来更新管道。