Amazon Step Functions 调用操作参考 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

    assets/input.json
输入

必需:条件

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

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

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

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

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

输入构件

  • 构件数:0 to 1

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

输出构件

  • 构件数:0 to 1

  • 描述:

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

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

输出变量

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

有关更多信息,请参阅 变量参考

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对象{}。有关在没有输入的情况下运行状态机执行的更多信息,请参阅 Ste p Functions StartExecution API

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

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

标准状态机

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

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

错误处理

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

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

    注意

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

  • 如果状态机执行的终端状态为FAILEDOUT、TIMED _ 或ABORTED,则操作执行失败。

快速状态机

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

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

  • 您无法指定输出构件。

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

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

错误处理

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

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