

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

# AWS Step Functions 调用操作参考
<a name="action-reference-StepFunctions"></a>

执行以下 AWS CodePipeline 操作的操作：
+ 从您的管道启动 AWS Step Functions 状态机执行。
+ 通过操作配置中的属性或位于要作为输入传递的管道构件中的文件向状态机提供初始状态。
+ （可选）设置执行 ID 前缀以便标识源自操作的执行。
+ 支持[标准和快速](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)状态机。

**注意**  
Step Functions 操作在 Lambda 上运行，因此它的构件大小配额与 Lambda 函数的构件大小配额相同。有关更多信息，请参阅《Lambda 开发人员指南》中的 [Lambda 配额](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)。

## 操作类型
<a name="action-reference-StepFunctions-type"></a>
+ 类别：`Invoke`
+ 拥有者：`AWS`
+ 提供方：`StepFunctions`
+ 版本：`1`

## 配置参数
<a name="action-reference-StepFunctions-config"></a>

**StateMachineArn**  
是否必需：是  
要调用的状态机的 Amazon 资源名称 (ARN)。

**ExecutionNamePrefix**  
必需：否  
默认情况下，操作执行 ID 将用作状态机执行名称。如果提供了前缀，则该前缀将追加到带连字符的操作执行 ID 的前面，共同用作状态机执行名称。  

```
myPrefix-1624a1d1-3699-43f0-8e1e-6bafd7fde791
```
对于快速状态机，名称应只包含 0-9、A-Z、a-z、- 和 \$1。

**InputType**  
必需：否  
+ **Literal (文本)**（默认值）：在指定此项时，**Input (输入)** 字段中的值将直接传递到状态机输入。

  选择**文本**时**输入**字段的输入项示例：

  ```
  {"action": "test"}
  ```
+ **FilePath****：由 “输入” 字段指定的输入构件中的文件内容用作状态机执行的输入。**如果设置为，**InputType**则需要输入工件**FilePath**。

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

  ```
  assets/input.json
  ```

**Input**  
必需：条件  
+ **文字**：当设置**InputType**为 “文**字**”（默认）时，此字段为可选字段。

  如果提供此项，则 **Input (输入)** 字段将直接用作状态机执行的输入。否则，将使用空 JSON 对象 `{}` 调用状态机。
+ **FilePath**: 当设置**InputType**为时 **FilePath**，此字段为必填字段。

  当设置为时 **InputType**，还需要输入工件**FilePath**。

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

## 输入构件
<a name="action-reference-StepFunctions-input"></a>
+ **构件数：**`0 to 1`
+ **描述：**如果设置**InputType**为 **FilePath**，则此构件是必需的，用于获取状态机执行的输入。

## 输出构件
<a name="action-reference-StepFunctions-output"></a>
+ **构件数：**`0 to 1`
+ **描述：**
  + **标准状态机**：如果提供此项，则使用状态机的输出填充输出构件。这是在状态机执行成功完成后从 [Step Fun DescribeExecution ctions API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 响应的`output`属性中获取的。
  + **快速状态机**：不受支持。

## 输出变量
<a name="action-reference-StepFunctions-variables"></a>

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

有关更多信息，请参阅 [变量参考](reference-variables.md)。

**StateMachineArn**  
状态机的 ARN。

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

## 服务角色权限：`StepFunctions` 操作
<a name="edit-role-stepfunctions"></a>

对于 `StepFunctions` 操作，需要以下最低权限才能创建具有 Step Functions 调用操作的管道。

```
{
    "Effect": "Allow",
    "Action": [
        "states:DescribeStateMachine",
        "states:DescribeExecution",
        "states:StartExecution"
    ],
    "Resource": "resource_ARN"
},
```

## 操作配置示例
<a name="action-reference-StepFunctions-example"></a>

### 默认输入示例
<a name="action-reference-StepFunctions-example-default"></a>

------
#### [ 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"
    }
}
```

------

### 文本输入示例
<a name="action-reference-StepFunctions-example-literal"></a>

------
#### [ 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\"}"
    }
}
```

------

### 输入文件示例
<a name="action-reference-StepFunctions-example-filepath"></a>

------
#### [ 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"
    }
}
```

------

## 行为
<a name="action-reference-StepFunctions-types"></a>

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

当设置**InputType**为 **Literal** 时，**输入**操作配置字段的内容将用作状态机的输入。如果未提供文本输入，则状态机执行将使用空的 JSON 对象 `{}`。有关在没有输入的情况下运行状态机执行的更多信息，请参阅 [Step Functions StartExecution API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)。

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

在成功启动执行后，两种状态机类型（*标准* 和*快速*）的行为将不同。

### 标准状态机
<a name="action-reference-StepFunctions-types-standard"></a>

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

如果配置了输出构件，则该构件将包含状态机的返回值。这是在状态机执行成功完成后从 [Step Fun DescribeExecution ctions API](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 响应的`output`属性中获取的。请注意，此 API 上已强制实施输出长度限制。

#### 错误处理
<a name="action-reference-StepFunctions-types-standard-handling"></a>
+ 如果操作无法启动状态机执行，则操作执行将失败。
+ 如果在 Ste CodePipeline p Functions 操作达到超时时间（默认为 7 天）之前，状态机执行未能达到终端状态，则操作执行将失败。尽管发生此失败，状态机也可能会继续运行。有关 Step Functions 中的状态机执行超时的更多信息，请参阅[标准和快速工作流](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)。
**注意**  
您可以使用此操作请求增加账户的调用操作超时配额。但配额增加将应用到该账户的所有区域中此类型的所有操作。
+ 如果状态机执行达到 FAILED、TIMED\$1OUT 或 ABORTED 终端状态，则操作执行失败。

### 快速状态机
<a name="action-reference-StepFunctions-types-express"></a>

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

为快速状态机配置的操作的注意事项：
+ 您无法指定输出构件。
+ 操作不会等待状态机执行完成。
+ 在中开始执行操作后 CodePipeline，即使状态机执行失败，操作也会成功执行。

#### 错误处理
<a name="action-reference-StepFunctions-types-express-handling"></a>
+ 如果 CodePipeline 无法启动状态机执行，则操作执行失败。否则，操作将立即成功。 CodePipeline 无论状态机执行需要多长时间完成或其结果如何，操作都会成功。

## 另请参阅
<a name="action-reference-StepFunctions-links"></a>

下列相关资源在您使用此操作的过程中会有所帮助。
+ [AWS Step Functions 开发者指南](https://docs.aws.amazon.com/step-functions/latest/dg/) — 有关状态机、执行和状态机输入的信息，请参阅《*AWS Step Functions 开发人员指南》*。
+ [教程：在管道中使用 AWS Step Functions 调用操作](tutorials-step-functions.md)：本教程将帮助您开始使用示例标准状态机，并说明如何使用控制台通过添加 Step Functions 调用操作来更新管道。