

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

# 为阶段配置条件
<a name="stage-conditions"></a>

您可以为某个阶段指定一个条件，例如检查管道运行中的某个特定变量，然后为该条件指定一个结果，例如跳过该阶段或该阶段失败。可以设置管道在运行过程中检查阶段条件，即指定对某一阶段进行检查，然后指定在满足某些条件时该阶段应如何继续。条件包含一条或多条规则，这些规则可在中的规则列表中找到 CodePipeline。如果一个条件中的所有规则都成功，则满足该条件。您可以配置条件，以便在不满足标准时，会产生指定的结果。

每个条件都有一个规则集，规则集是一组有序的规则，这些规则会一起进行评估。因此，如果条件中有一条规则失败，那么条件也会失败。您可以在管道运行时覆盖规则条件。

条件用于特定类型的表达式，每种表达式都有特定的结果选项，具体如下：
+ **入口** - 进行检查的条件，如果满足这些条件，就可以进入某个阶段。规则的结果选项如下：**失败**或**跳过**
+ **失败时** - 阶段失败时进行检查的条件。规则的结果选项如下：**回滚**
+ **成功时** - 阶段成功时进行检查的条件。规则的结果选项如下：**回滚**或**失败**

每种类型的条件都有一套*规则*支持。

对于每种类型的条件，都有由条件设置的特定操作。该操作是条件检查成功或失败的结果。例如，“入口”条件遇到警报（规则），则检查成功，结果（操作）是进入阶段受阻。

您也可以使用 AWS CodePipeline 控制台或手动 AWS CLI 回滚或重试阶段中的某个阶段或操作。请参阅[为阶段配置条件](#stage-conditions)。

**Topics**
+ [阶段条件的使用案例](#stage-conditions-cases)
+ [为阶段条件配置结果的考虑因素](#stage-conditions-considerations)
+ [为阶段条件配置规则的考虑因素](#stage-conditions-considerations-rules)
+ [创建“入口”条件](#stage-conditions-entry)
+ [创建“失败时”条件](#stage-conditions-onfailure)
+ [创建“成功时”条件](#stage-conditions-onsuccess)
+ [删除阶段条件](#stage-conditions-delete)
+ [覆盖阶段条件](#stage-conditions-override)

## 阶段条件的使用案例
<a name="stage-conditions-cases"></a>

阶段条件有多种使用案例，可用于在管道中设置发布和变更安全。以下是阶段条件的示例使用案例。
+ 使用 Entry 条件定义一个条件，该条件将检查 CloudWatch警报状态，如果生产环境未处于正常状态，警报状态将阻止更改。
+ 使用等待时间为 60 的 Entry 条件来定义一个条件，当一个阶段中的所有操作都成功完成时要进行评估，然后如果警报在 60 分钟内进入 CloudWatch 警报状态，则回滚更改。
+ 使用“成功时”条件定义一个条件，以便当阶段成功完成时，规则将检查当前时间是否在部署窗口内，如果规则成功，则进行部署。

## 为阶段条件配置结果的考虑因素
<a name="stage-conditions-considerations"></a>

阶段条件的考虑因素如下：
+ 不能在 onFailure 条件下使用自动阶段重试。
+ 在配置使用**回滚**结果的条件时，只有在当前管道结构版本中可用的情况下，阶段才能回滚到之前的执行。
+ 在配置使用**回滚**结果的条件时，不能回滚到属于回滚执行类型的目标执行 ID。
+ 对于在条件失败时使用**跳过**结果跳过阶段的“入口”条件，只支持 `LambdaInvoke` 和 `VariableCheck` 规则。
+ 无法对处于**已跳过**状态的阶段执行手动阶段重试。
+ 无法对处于**已跳过**状态的阶段执行手动回滚。
+ 如果条件配置为使用**跳过**结果，则无法覆盖该条件。
+ 除**跳过**结果外，您可以在开始执行管道时覆盖阶段条件。对于启动了覆盖功能的阶段条件，执行情况如下表所示。
+   
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/stage-conditions.html)

## 为阶段条件配置规则的考虑因素
<a name="stage-conditions-considerations-rules"></a>

阶段条件可用规则的考虑因素如下：
+ 对于 `LambdaInvoke` 规则，您必须首先配置要在规则中使用的 Lambda 函数。准备好 Lambda 函数 ARN，以便在配置规则时提供。
+ 对于`CloudWatchAlarm`规则，必须先配置要在规则中使用 CloudWatch 的事件事件。准备好事件 ARN，以便在配置规则时提供。

## 创建“入口”条件
<a name="stage-conditions-entry"></a>

您可以使用控制台或 CLI 配置阶段的“入口”条件。您将为每个条件配置相应的规则和结果。对于回滚结果，只有当前一次执行是在当前管道结构版本中启动时，管道才能回滚到前一次执行。

这些步骤提供了一个使用监控规则的“入口”条件示例。

有关更多信息，请参阅 *CodePipeline API 指南[RuleExecution](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleExecution.html)*中的[条件](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_Condition.html)和。[RuleTypeId](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleTypeId.html)

### 创建进入条件- CloudWatchAlarm 规则示例（控制台）
<a name="stage-conditions-entry-console"></a>

您可以为阶段配置“入口”条件，以及您希望在满足条件时，阶段执行的规则和结果。

**配置“入口”条件（控制台）**

1. 完成所有先决条件，例如为提供资源的规则创建资源和 ARN，例如。**AWS CloudWatchAlarm**

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   显示所有与您的 AWS 账户 关联的管道的名称和状态。

1. 在 **Name** 中，选择您要编辑的管道的名称。

1. 在管道详细信息页中，选择**编辑**。

1. 在**编辑**页面上，对于要编辑的操作，选择**编辑阶段**。

1. 选择**添加入口条件**。此时将显示**阶段前入口条件**卡，其中包含适用于该条件的**失败**选项。

1. 选择**添加规则**，然后完成以下操作。

   1. 在**规则名称**中，输入规则的名称。在此示例中，请输入 `MyAlarmRule`。

   1. 在**规则提供程序**中，选择要添加到条件中的预配置规则提供程序。在本示例中，选择 **AWS CloudWatchAlarm**，然后完成以下步骤。

   1. 在**区域**中，选择适合您条件的区域或保留默认值。

   1. 在**警报名称**中，选择要用于规则的 CloudWatch 资源。您必须已在账户中创建了资源。

   1. （可选）在**等待时间**中，输入首次评估警报时如果警报处于警报状态 CodePipeline 将等待的时间。如果首次检查规则时警报处于 OK 状态，则规则会立即成功执行。

   1. （可选）输入要监控的任何特定警报状态，并酌情输入角色 ARN。

   1. 完成阶段编辑后，选择**完成**。在管道编辑页面上，选择**保存**。

1. 运行后，查看结果。

### 创建使用“跳过”结果和 `VariableCheck` 规则的“入口”条件（控制台）
<a name="stage-conditions-entry-skip"></a>

您可以为阶段配置“入口”条件，这样如果不满足“入口”条件，则跳过该阶段。如果条件失败，则生成相应结果，并跳过该阶段。跳过阶段时，阶段状态为**已跳过**，操作状态为**未运行**。有关使用“跳过”结果的阶段条件的考虑因素，请参阅[为阶段条件配置结果的考虑因素](#stage-conditions-considerations)。

在下面的示例中，变量检查规则发现值不匹配，因此跳过了构建阶段。

**配置使用**跳过**结果的“入口”条件（控制台）**

1. 完成所有先决条件，例如为提供资源的规则创建资源和 ARN，例如。**AWS CloudWatchAlarm**

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   显示所有与您的 AWS 账户 关联的管道的名称和状态。

1. 在 **Name** 中，选择您要编辑的管道的名称。

1. 在管道详细信息页中，选择**编辑**。

1. 在**编辑**页面上，对于要编辑的操作，选择**编辑阶段**。

1. 选择**添加入口条件**，然后选择**跳过**作为结果。

1. 选择**添加规则**，然后完成以下操作。

   1. 在**规则名称**中，输入规则的名称。在此示例中，请输入 `MyAlarmRule`。

   1. 在**规则提供程序**中，选择要添加到条件中的预配置规则提供程序。在本示例中，选择 **VariableCheck**，然后完成以下步骤。  
![\[使用的一个发布流程示例 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/stage-cond-fail-skip.png)

   1. 在**区域**中，选择适合您条件的区域或保留默认值。

   1. 在**变量**中，选择要与之比较的变量，`#{SourceVariables.FullRepositoryName}`例如具有 GitHub （通过 GitHub App）源操作的管道。输入存储库名称并选择运算符，如**等于**。

   1. 完成阶段编辑后，选择**完成**。在管道编辑页面上，选择**保存**。

1. 运行后，查看结果。  
![\[使用的一个发布流程示例 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/stage-skipped.png)

1. 要查看详细信息，请选择**查看**。以下示例中的详细信息显示，条件的配置结果为**跳过**，不能覆盖。由于不满足条件，规则状态为**失败**。  
![\[一个示例条件详细信息页面，其中显示了 “跳过” 结果条件 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/condition-exec-details.png)

### 创建“入口”条件（CLI）
<a name="stage-conditions-entry-cli"></a>

要使用配置入口条件，请使用命令创建或更新管道，详见[创建管道、阶段和操作](pipelines-create.md)和中[在 CodePipeline 中编辑管道](pipelines-edit.md)。 AWS CLI 

**配置条件和一条或多条规则（CLI）**
+ 打开终端（Linux、macOS 或 Unix）或命令提示符（Windows），并使用 AWS CLI 运行 `update-pipeline` 命令，指定管道结构中的失败条件。下面的示例为名为 `Deploy` 的阶段配置“入口”条件：

  ```
  {
      "name": "Deploy",
      "actions": [
          {
              "name": "Deploy",
              "actionTypeId": {
                  "category": "Deploy",
                  "owner": "AWS",
                  "provider": "S3",
                  "version": "1"
              },
              "runOrder": 1,
              "configuration": {
                  "BucketName": "MyBucket",
                  "Extract": "false",
                  "ObjectKey": "object.xml"
              },
              "outputArtifacts": [],
              "inputArtifacts": [
                  {
                      "name": "SourceArtifact"
                  }
              ],
              "region": "us-east-1",
              "namespace": "DeployVariables"
          }
      ],
      "beforeEntry": {
          "conditions": [
              {
                  "result": "FAIL",
                  "rules": [
                      {
                          "name": "MyAlarmRule",
                          "ruleTypeId": {
                              "category": "Rule",
                              "owner": "AWS",
                              "provider": "CloudWatchAlarm",
                              "version": "1"
                          },
                          "configuration": {
                              "AlarmName": "CWAlarm",
                              "WaitTime": "1"
                          },
                          "inputArtifacts": [],
                          "region": "us-east-1"
                      }
                  ]
              }
          ]
      }
  }
  ```

  有关为阶段回滚配置成功条件的更多信息，请参阅 *CodePipeline API 参考[SuccessConditions](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_SuccessConditions.html)*中的。

### 创建“入口”条件（CFN）
<a name="stage-conditions-entry-cfn"></a>

 CloudFormation 要用于配置进入条件，请使用`beforeEntry`参数。进入后，阶段将运行规则并执行结果。

```
beforeEntry:
     Result: FAIL
```
+ 更新模板，如以下代码段所示。下面的示例使用名为 `MyMonitorRule` 的规则配置“入口”条件：

  ```
  Name: Deploy
  Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: S3
      Version: '1'
    RunOrder: 1
    Configuration:
      BucketName: MyBucket
      Extract: 'false'
      ObjectKey: object.xml
    OutputArtifacts: []
    InputArtifacts:
    - Name: SourceArtifact
    Region: us-east-1
    Namespace: DeployVariables
  BeforeEntry:
    Conditions:
    - Result: FAIL
      Rules:
      - Name: MyMonitorRule
        RuleTypeId:
          Category: Rule
          Owner: AWS
          Provider: CloudWatchAlarm
          Version: '1'
        Configuration:
          AlarmName: CWAlarm
          WaitTime: '1'
        InputArtifacts: []
        Region: us-east-1
  ```

  有关配置 beforeEntry 条件的更多信息，请参阅[AWS::CodePipeline::Pipeline BeforeEntryConditions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-beforeentryconditions.html)《*CloudFormation 用户指南》`StageDeclaration`*中的。

## 创建“失败时”条件
<a name="stage-conditions-onfailure"></a>

您可以使用控制台或 CLI 配置阶段的“失败时”条件。您将为每个条件配置相应的规则和结果。对于回滚结果，只有当前一次执行是在当前管道结构版本中启动时，管道才能回滚到前一次执行。

### 创建“失败时”条件（控制台）
<a name="stage-conditions-onfailure-console"></a>

您可以为阶段配置“失败时”条件，以及您希望阶段在满足条件时执行的规则和结果。

**配置“失败时”条件（控制台）**

1. 完成所有先决条件，例如为提供资源的规则（例如规则）创建资源和 ARN。**LambdaInvoke**

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   显示所有与您的 AWS 账户 关联的管道的名称和状态。

1. 在 **Name** 中，选择您要编辑的管道的名称。

1. 在管道详细信息页中，选择**编辑**。

1. 在**编辑**页面上，对于要编辑的操作，选择**编辑阶段**。

1. 选择**添加失败条件**。此时将显示**失败条件**卡，其中包含适用于该条件的**回滚**选项。

1. 选择**添加规则**，然后完成以下操作。

   1. 在**规则名称**中，输入规则的名称。在此示例中，请输入 `MyLambdaRule`。

   1. 在**规则提供程序**中，选择要添加到条件中的预配置规则提供程序。在本示例中，选择 **AWS LambdaInvoke**，然后完成以下步骤。

   1. 在**区域**中，选择适合您条件的区域或保留默认值。

   1. 在**输入构件**中，选择源构件。

   1. 在**函数名称**中，选择要用于规则的 Lambda 资源。您必须已在账户中创建了资源。

   1. （可选）在**用户参数**中，输入任何代表附加配置参数的配对。

   1. （可选）在**角色 ARN** 中，输入角色 ARN（如果已配置）。

   1. （可选）在**超时（以分钟为单位）**中，输入规则在超时之前应等待的时间（以分钟为单位）。

   1. 完成阶段编辑后，选择**完成**。在管道编辑页面上，选择**保存**。

### 创建使用“重试”结果的 onFailure 条件示例（控制台）
<a name="w2aac36c27b7"></a>

您可以为阶段配置 onFailure 条件，这样如果不满足“入口”条件，就会重试该阶段。作为此结果的一部分，您可以配置重试模式，指定是重试失败的操作还是重试失败的阶段。

**配置使用“重试”结果的 onFailure 条件（控制台）**

1. 完成所有先决条件，例如为提供资源的规则创建资源和 ARN，例如。**AWS CloudWatchAlarm**

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   显示所有与您的 AWS 账户 关联的管道的名称和状态。

1. 在 **Name** 中，选择您要编辑的管道的名称。

1. 在管道详细信息页中，选择**编辑**。

1. 在**编辑**页面上，对于要编辑的操作，选择**编辑阶段**。

1. 在阶段底部的**自动阶段配置:**下，选择**启用阶段失败时的自动重试**。在**重试模式**中，选择**重试失败的阶段**或**重试失败的操作**。  
![\[为中的 CodePipeline阶段配置重试模式。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/stage-retry-mode.png)

1. 选择添加 onFailure 条件，然后选择**添加规则**并输入条件规则。

   1. 在**规则名称**中，输入规则的名称。在此示例中，请输入 `MyAlarmRule`。

   1. 在**规则提供程序**中，选择要添加到条件中的预配置规则提供程序。在本示例中，选择 **CloudWatchAlarm**，然后完成以下步骤。

   1. 在**区域**中，选择适合您条件的区域或保留默认值。

   1. 在**警报名称**中，为警报选择已配置的资源。

   1. 完成阶段编辑后，选择**完成**。在管道编辑页面上，选择**保存**。

1. 运行后，查看结果。

### 创建“失败时”条件（CLI）
<a name="stage-conditions-onfailure-cli"></a>

要使用配置失败时条件，请使用命令创建或更新管道，详见[创建管道、阶段和操作](pipelines-create.md)和中[在 CodePipeline 中编辑管道](pipelines-edit.md)。 AWS CLI 

**配置条件和一条或多条规则（CLI）**
+ 打开终端（Linux、macOS 或 Unix）或命令提示符（Windows），并使用 AWS CLI 运行 `update-pipeline` 命令，指定管道结构中的失败条件。下面的示例为名为 `Deploy` 的阶段配置了“失败时”条件：

  ```
  {
      "name": "Deploy",
      "actions": [
          {
              "name": "Deploy",
              "actionTypeId": {
                  "category": "Deploy",
                  "owner": "AWS",
                  "provider": "S3",
                  "version": "1"
              },
              "runOrder": 1,
              "configuration": {
                  "BucketName": "MyBucket",
                  "Extract": "false",
                  "ObjectKey": "object.xml"
              },
              "outputArtifacts": [],
              "inputArtifacts": [
                  {
                      "name": "SourceArtifact"
                  }
              ],
              "region": "us-east-1",
              "namespace": "DeployVariables"
          }
      ],
      "onFailure": {
          "conditions": [
              {
                  "result": "ROLLBACK",
                  "rules": [
                      {
                          "name": "MyLambdaRule",
                          "ruleTypeId": {
                              "category": "Rule",
                              "owner": "AWS",
                              "provider": "LambdaInvoke",
                              "version": "1"
                          },
                          "configuration": {
                              "FunctionName": "my-function"
                          },
                          "inputArtifacts": [
                              {
                                  "name": "SourceArtifact"
                              }
                          ],
                          "region": "us-east-1"
                      }
                  ]
              }
          ]
      }
  }
  ```

  有关配置故障条件的更多信息，请参阅 *CodePipeline API 参考[FailureConditions](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_FailureConditions.html)*中的。

### 创建“失败时”条件（CFN）
<a name="stage-conditions-onfailure-cfn"></a>

 CloudFormation 要用于配置 “失败” 条件，请使用`OnFailure`参数。成功时，阶段将运行规则并执行结果。

```
OnFailure:
     Result: ROLLBACK
```
+ 更新模板，如以下代码段所示。以下示例使用名`MyMonitorRule`为的规则配置 OnFailure 条件：

  ```
  name: Deploy
  actions:
  - name: Deploy
    actionTypeId:
      category: Deploy
      owner: AWS
      provider: S3
      version: '1'
    runOrder: 1
    configuration:
      BucketName: MyBucket
      Extract: 'false'
      ObjectKey: object.xml
    outputArtifacts: []
    inputArtifacts:
    - name: SourceArtifact
    region: us-east-1
    namespace: DeployVariables
  OnFailure:
    conditions:
    - result: ROLLBACK
      rules:
      - name: MyMonitorRule
        ruleTypeId:
          category: Rule
          owner: AWS
          provider: CloudWatchAlarm
          version: '1'
        configuration:
          AlarmName: AlarmOnHelloWorldInvocation
          AlarmStates: ALARM
          WaitTime: '1'
        inputArtifacts: []
        region: us-east-1
  ```

  有关配置故障条件的更多信息，请参阅[OnFailure](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-onfailure)《*CloudFormation 用户指南*》`StageDeclaration`中的。

## 创建“成功时”条件
<a name="stage-conditions-onsuccess"></a>

您可以使用控制台或 CLI 配置阶段的“成功时”条件。您将为每个条件配置相应的规则和结果。对于回滚结果，只有当前一次执行是在当前管道结构版本中启动时，管道才能回滚到前一次执行。

这些步骤提供了使用部署窗口规则的“成功时”条件示例。

有关更多信息，请参阅 *CodePipeline API 指南[RuleExecution](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleExecution.html)*中的[条件](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_Condition.html)和。[RuleTypeId](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleTypeId.html)

### 创建“成功时”条件（控制台）
<a name="stage-conditions-onsuccess-console"></a>

您可以为阶段配置“成功时”条件，以及您希望阶段在满足条件时执行的规则和结果。

**配置“成功时”条件（控制台）**

1. 完成所有先决条件，例如为提供资源的规则创建资源和 ARN，例如。 AWS LambdaRule

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   显示所有与您的 AWS 账户 关联的管道的名称和状态。

1. 在 **Name** 中，选择您要编辑的管道的名称。

1. 在管道详细信息页中，选择**编辑**。

1. 在**编辑**页面上，对于要编辑的操作，选择**编辑阶段**。

1. 选择**添加成功条件**。此时将显示**阶段成功条件**卡。选择显示为该条件类型的可用结果的**回滚**或**失败**选项。

1. 选择**添加规则**，然后完成以下操作。

   1. 在**规则名称**中，输入条件的名称。在此示例中，请输入 `MyDeploymentRule`。

   1. 在**规则提供程序**中，选择要添加到条件中的预配置规则。在本示例中，选择 **AWS DeploymentWindow**，然后完成以下步骤。

   1. 在**区域**中，选择适合您条件的区域或保留默认值。

   1. 在 **Cron** 中，输入部署窗口的 cron 表达式。cron 表达式定义了允许部署的天数和时间。有关 cron 表达式的参考信息，请参阅[使用 cron 和 rate 表达式计划规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-scheduled-rule-pattern.html#eb-cron-expressions)。

   1. （可选）在中 **TimeZone**，输入部署窗口的时区。

1. 运行后，查看结果。  
![\[中的示例条件 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/stage-condition-onsuccess-deplwin-example-message.png)

### 创建“成功时”条件（CLI）
<a name="stage-conditions-onsuccess-cli"></a>

要使用 AWS CLI 来配置 On Success 条件，请使用命令创建或更新管道，详见[创建管道、阶段和操作](pipelines-create.md)和中[在 CodePipeline 中编辑管道](pipelines-edit.md)。

**配置条件和一条或多条规则（CLI）**
+ 打开终端（Linux、macOS 或 Unix）或命令提示符（Windows），并使用 AWS CLI 运行 `update-pipeline` 命令，指定管道结构中的失败条件。下面的示例为名为 `Deploy` 的阶段配置了“成功时”条件，其中的规则名为 `MyDeploymentRule`：

  ```
  {
      "name": "Deploy",
      "actions": [
          {
              "name": "Deploy",
              "actionTypeId": {
                  "category": "Deploy",
                  "owner": "AWS",
                  "provider": "S3",
                  "version": "1"
              },
              "runOrder": 1,
              "configuration": {
                  "BucketName": "MyBucket",
                  "Extract": "false",
                  "ObjectKey": "object.xml"
              },
              "outputArtifacts": [],
              "inputArtifacts": [
                  {
                      "name": "SourceArtifact"
                  }
              ],
              "region": "us-east-1",
              "namespace": "DeployVariables"
          }
      ],
      "onSuccess": {
         "conditions": [
              {
                  "result": "FAIL",
                  "rules": [
                      {
                          "name": "MyAlarmRule",
                          "ruleTypeId": {
                              "category": "Rule",
                              "owner": "AWS",
                              "provider": "CloudWatchAlarm",
                              "version": "1"
                          },
                          "configuration": {
                              "AlarmName": "CWAlarm",
                              "WaitTime": "1"
                          },
                          "inputArtifacts": [],
                          "region": "us-east-1"
                      }
                  ]
              }
          ]
      }
  }
  ```

  有关配置成功条件的更多信息，请参阅 *CodePipeline API 参考[SuccessConditions](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_SuccessConditions.html)*中的。

### 创建“成功时”条件（CFN）
<a name="stage-conditions-onsuccess-cfn"></a>

 CloudFormation 要使用配置成功条件，请使用`OnSuccess`参数。成功时，阶段将运行规则并执行结果。

```
OnSuccess:
     Result: ROLLBACK
```
+ 更新模板，如以下代码段所示。以下示例使用名`MyDeploymentWindowRule`为的规则配置 OnSuccess 条件：

  ```
  name: Deploy
  actions:
  - name: Deploy
    actionTypeId:
      category: Deploy
      owner: AWS
      provider: S3
      version: '1'
    runOrder: 1
    configuration:
      BucketName: MyBucket
      Extract: 'false'
      ObjectKey: object.xml
    outputArtifacts: []
    inputArtifacts:
    - name: SourceArtifact
    region: us-east-1
    namespace: DeployVariables
  onSuccess:
     conditions:
    - result: FAIL
      rules:
      - name: MyMonitorRule
        ruleTypeId:
          category: Rule
          owner: AWS
          provider: CloudWatchAlarm
          version: '1'
        configuration:
          AlarmName: CWAlarm
          WaitTime: '1'
        inputArtifacts: []
        region: us-east-1
  ```

  有关为阶段回滚配置故障条件的更多信息，请参阅[OnFailure](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-onfailure)《*CloudFormation 用户指南*》`StageDeclaration`中的。

## 删除阶段条件
<a name="stage-conditions-delete"></a>

您可以删除为管道配置的阶段条件。

**删除阶段条件**

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   将显示与您 AWS 账户 关联的所有管道的名称和状态。

1. 在 **Name** 中，选择您要编辑的管道的名称。

1. 在管道详细信息页中，选择**编辑**。

1. 在**编辑**页面上，对于要编辑的条件，选择**编辑阶段**。

1. 在要删除的条件旁边，选择**删除条件**。

## 覆盖阶段条件
<a name="stage-conditions-override"></a>

您可以覆盖为管道配置的阶段条件。在控制台中，当阶段和规则运行时，您可以选择覆盖阶段条件。这会导致阶段运行 

**覆盖阶段条件**

1. 在此示例中，管道阶段在条件下运行。**覆盖**按钮已启用。  
![\[中的示例条件 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/stage-condition-override-depl.png)

1. 在要覆盖的条件旁边，选择**覆盖**。  
![\[中的示例条件 CodePipeline。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/stage-condition-override-depl-overridden.png)

1. 要查看详细信息，请选择**查看**。以下示例中的详细信息显示，条件的配置结果为“失败”，但已被覆盖。由于覆盖，规则状态为 Abandoned。  
![\[一个示例条件详细信息页面，其中显示了被覆盖的条件。 CodePipeline\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/stage-condition-onsuccess-deplwin-example-message-review.png)