

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

# 阶段条件是如何运作的？
<a name="concepts-how-it-works-conditions"></a>

对于每个指定规则的条件，都会运行该规则。如果条件失败，则产生相应结果。只有当条件失败时，阶段才会执行指定的结果。或者，作为规则的一部分，您还可以指定在某些情况下 CodePipeline应使用哪些资源。例如，该`CloudWatchAlarm`规则将使用 CloudWatch 警报资源对条件进行检查。

一个条件可匹配多个规则，每个规则可指定三个提供程序中的一个。

创建条件的大致流程如下。

1. 从中的可用条件类型中选择条件类型 CodePipeline。例如，使用“成功时”条件类型来设置阶段，这样在阶段成功后，可以使用一组规则在继续之前运行检查。

1. 选择 规则。例如，`CloudWatchAlarm` 规则将检查警报，并使用 EB 检查预先配置的警报阈值。如果检查成功，警报低于阈值，则该阶段可以继续进行。

1. 配置结果，如规则失败时将使用的回滚。

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

下图显示了中输入条件类型的示例流程 CodePipeline。条件回答的问题是：如果条件不满足，也就是任何规则都失败了，会发生什么？ 在以下流程中，使用 LambdaInvoke 规则和规则配置了进入条件。`CloudWatchAlarm`如果规则失败，则会启用配置的结果，如“失败”。

![\[配置了两条规则（一条规则和 LambdaInvoke 一条 CloudWatchAlarm 规则）的 “条目” 条件类型示例。\]](http://docs.amazonaws.cn/codepipeline/latest/userguide/images/conditions-overview-entry.png)


下图显示了 On Failure 条件类型的示例流程 CodePipeline。条件回答的问题是：如果条件满足，即所有规则都检查成功，会发生什么？ 在以下流程中，使用 LambdaInvoke 规则和规则配置 On Failure `CloudWatchAlarm` 条件。如果规则成功，则会启用配置的结果，如“失败”。

![\[配置了两个规则（一个 Lambda 规则和一个 CloudWatchAlarm 规则）的“失败时”条件类型示例。\]](http://docs.amazonaws.cn/codepipeline/latest/userguide/images/conditions-overview-onfailure.png)


下图显示了 On Success 条件类型的示例流程 CodePipeline。条件回答的问题是：如果条件满足，即所有规则都检查成功，会发生什么？ 在以下流中，使用 `LambdaInvoke` 规则和 `CloudWatchAlarm` 规则配置了“成功时”条件。如果规则成功，则会启用配置的结果，如“失败”。

![\[配置了两个规则（一个 Lambda 规则和一个 CloudWatchAlarm 规则）的“成功时”条件类型示例。\]](http://docs.amazonaws.cn/codepipeline/latest/userguide/images/conditions-overview-onsuccess.png)




## 阶段条件的规则
<a name="concepts-how-it-works-rules"></a>

配置阶段条件时，可从预定义规则中进行选择，并指定规则的结果。如果条件中的任何规则失败，则条件状态为“失败”；如果所有规则都成功，则条件状态为“成功”。如何满足“失败时”和“成功时”条件的标准取决于规则的类型。

以下是您可以添加到阶段条件的托管规则。
+ 条件可以使用 **Commands** 规则来指定满足条件规则标准的命令。有关此规则的更多信息，请参阅[命令](rule-reference-Commands.md)。
+ 条件可以使用该**Amazon DeploymentWindow**规则来指定允许部署的批准部署时间。该规则的标准将根据所提供的 cron 表达式来衡量部署窗口。当部署窗口中的日期和时间符合规则的 cron 表达式中的标准时，该规则就会成功。有关此规则的更多信息，请参阅[DeploymentWindow](rule-reference-DeploymentWindow.md)。
+ 条件可以使用 **Amazon Lambda** 规则来检查从已配置的 Lambda 函数返回的错误状态。当检查接收到 Lambda 函数结果时，则符合该规则。来自 Lambda 函数的错误符合“失败时”条件的标准。有关此规则的更多信息，请参阅[LambdaInvoke](rule-reference-LambdaInvoke.md)。
+ 条件可以使用该**Amazon CloudWatchAlarm**规则来检查根据 CloudWatch 事件配置的警报。当检查返回 OK、ALARM 或 INSUFF\$1DATA 警报状态时，则符合该规则。对于“成功时”条件，OK 和 INSUFFICIENT\$1DATA 符合标准。ALARM 符合“失败时”条件的标准。有关此规则的更多信息，请参阅[CloudWatchAlarm](rule-reference-CloudWatchAlarm.md)。
+ 条件可以使用该**VariableCheck**规则来创建条件，在该条件下，根据提供的表达式检查输出变量。当变量值满足规则条件（如值等于或大于指定的输出变量）时，则规则通过检查。有关此规则的更多信息，请参阅[VariableCheck](rule-reference-VariableCheck.md)。