AWS Step Functions - AWS CodePipeline

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

AWS Step Functions

执行以下 AWS CodePipeline 操作的操作:

  • 从您的管道启动 AWS Step Functions 状态机执行。

  • 通过操作配置中的属性或位于要作为输入传递的管道构件中的文件向状态机提供初始状态。

  • (可选)设置执行 ID 前缀以便标识源自操作的执行。

  • 支持标准和快速状态机。

注意

Step Functions 操作在 Lambda 上运行,因此它的工件大小配额与 Lambda 函数的工件大小配额相同。有关更多信息,请参阅 Lambda 开发人员指南中的 Lambda 配额

操作类型

  • 类别: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:由 “输入” 字段指定的输入构件中的文件内容用作状态机执行的输入。如果设置为,InputType则需要输入工件FilePath

    选中 “输入” 字段时输入FilePath的示例条目:

    assets/input.json
输入

必需:条件

  • 文字:当设置InputType为 “文”(默认)时,此字段为可选字段。

    如果提供此项,则 Input (输入) 字段将直接用作状态机执行的输入。否则,将使用空 JSON 对象 {} 调用状态机。

  • FilePath: 当设置InputType为时 FilePath,此字段为必填字段。

    当设置为时 InputType,还需要输入工件FilePath

    指定的输入构件中文件的内容将用作状态机执行的输入。

输入构件

  • 构件数:0 to 1

  • 描述:如果设置InputTypeFilePath,则此构件是必需的,用于获取状态机执行的输入。

输出构件

  • 构件数:0 to 1

  • 描述:

    • 标准状态机:如果提供此项,则使用状态机的输出填充输出构件。这是在状态机执行成功完成后从 Step Fun DescribeExecution ctions API 响应的output属性中获取的。

    • 快速状态机:不受支持。

输出变量

此操作会生成输出变量,该变量可由管道中下游操作的操作配置引用。

有关更多信息,请参阅 Variables

StateMachineArn

状态机的 ARN。

ExecutionArn

状态机的执行的 ARN。仅标准状态机。

操作配置示例

默认输入示例

YAML
Name: ActionName ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine ExecutionNamePrefix: my-prefix
JSON
{ "Name": "ActionName", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix" } }

文本输入示例

YAML
Name: ActionName ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine ExecutionNamePrefix: my-prefix Input: '{"action": "test"}'
JSON
{ "Name": "ActionName", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix", "Input": "{\"action\": \"test\"}" } }

输入文件示例

YAML
Name: ActionName InputArtifacts: - Name: myInputArtifact ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: 'arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine' ExecutionNamePrefix: my-prefix InputType: FilePath Input: assets/input.json
JSON
{ "Name": "ActionName", "InputArtifacts": [ { "Name": "myInputArtifact" } ], "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix", "InputType": "FilePath", "Input": "assets/input.json" } }

行为

在发布期间,使用操作配置中指定的输入 CodePipeline 执行已配置的状态机。

当设置InputTypeLiteral 时,输入操作配置字段的内容将用作状态机的输入。如果未提供文本输入,则状态机执行将使用空的 JSON 对象 {}。有关在没有输入的情况下运行状态机执行的更多信息,请参阅 Step Functions StartExecution API

设置InputType为时 FilePath,该操作将解压缩输入对象,并使用在输入操作配置字段中指定的文件内容作为状态机的输入。指定后 FilePath,“输入” 字段为必填字段,并且必须存在输入对象;否则,操作将失败。

在成功启动执行后,两种状态机类型(标准快速)的行为将不同。

标准状态机

如果标准状态机执行成功启动,则会 CodePipeline 轮询 DescribeExecution API,直到执行达到终端状态。如果执行成功完成,则操作将成功;否则,操作将失败。

如果配置了输出构件,则该构件将包含状态机的返回值。这是在状态机执行成功完成后从 Step Fun DescribeExecution ctions API 响应的output属性中获取的。请注意,此 API 上已强制实施输出长度限制。

错误处理

  • 如果操作无法启动状态机执行,则操作执行将失败。

  • 如果在 Ste CodePipeline p Functions 操作达到超时时间(默认为 7 天)之前,状态机执行未能达到终端状态,则操作执行将失败。尽管发生此失败,状态机也可能会继续运行。有关 Step Functions 中的状态机执行超时的更多信息,请参阅标准和快速工作流

    注意

    您可以使用此操作请求增加账户的调用操作超时配额。但配额增加将应用到该账户的所有区域中此类型的所有操作。

  • 如果状态机执行达到 FAILED、TIMED_OUT 或 ABORTED 终端状态,则操作执行失败。

快速状态机

如果快速状态机执行已成功启动,则表示调用操作执行已成功完成。

为快速状态机配置的操作的注意事项:

  • 您无法指定输出构件。

  • 操作不会等待状态机执行完成。

  • 在中开始执行操作后 CodePipeline,即使状态机执行失败,操作也会成功执行。

错误处理

  • 如果 CodePipeline 无法启动状态机执行,则操作执行失败。否则,操作将立即成功。 CodePipeline 无论状态机执行需要多长时间完成或其结果如何,操作都会成功。

下列相关资源在您使用此操作的过程中会有所帮助。