

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

# 规则结构参考
<a name="rule-reference"></a>

本节仅为规则配置提供参考。有关管道结构的概念性介绍，请参阅 [CodePipeline 管道结构参考](reference-pipeline-structure.md)。

CodePipeline 中的每个规则提供方都在管道结构中使用一组必需和可选的配置字段。本节按规则提供方提供以下参考信息：
+ 管道结构规则块中包含的 `RuleType` 字段的有效值，如 `Owner` 和 `Provider`。
+ 管道结构规则部分中包含的 `Configuration` 参数（必需和可选）的描述和其它参考信息。
+ 有效的示例 JSON 和 YAML 规则配置字段。

参考信息对下列规则提供方可用：

**Topics**
+ [CloudWatchAlarm](rule-reference-CloudWatchAlarm.md)
+ [CodeBuild 规则](rule-reference-CodeBuild.md)
+ [命令](rule-reference-Commands.md)
+ [DeploymentWindow](rule-reference-DeploymentWindow.md)
+ [LambdaInvoke](rule-reference-LambdaInvoke.md)
+ [VariableCheck](rule-reference-VariableCheck.md)

# CloudWatchAlarm
<a name="rule-reference-CloudWatchAlarm"></a>

创建条件时，可以添加 `CloudWatchAlarm` 规则。本节提供对规则参数的参考。有关规则和条件的更多信息，请参阅[阶段条件是如何运作的？](concepts-how-it-works-conditions.md)。

您必须已经在 Amazon 中创建了警报 CloudWatch 作为单独的资源。

**Topics**
+ [规则类型](#rule-reference-CloudWatchAlarm-type)
+ [配置参数](#rule-reference-CloudWatchAlarm-config)
+ [规则配置示例](#rule-reference-CloudWatchAlarm-example)
+ [另请参阅](#rule-reference-CloudWatchAlarm-links)

## 规则类型
<a name="rule-reference-CloudWatchAlarm-type"></a>
+ 类别：`Rule`
+ 拥有者：`AWS`
+ 提供方：`CloudWatchAlarm`
+ 版本：`1`

## 配置参数
<a name="rule-reference-CloudWatchAlarm-config"></a>

**AlarmName**  
是否必需：是  
 CloudWatch 警报的名称。这是在中创建的单独资源 CloudWatch。

**AlarmStates**  
必需：否  
要监控的规则所需的 CloudWatch 警报状态。有效值：ALARM、OK 和 INSUFFICIENT\$1DATA。

**WaitTime**  
必需：否  
运行规则结果前允许状态更改的等待时间（分钟）。例如，配置在应用规则结果之前等待 20 分钟让警报状态变为 OK。

## 规则配置示例
<a name="rule-reference-CloudWatchAlarm-example"></a>

------
#### [ YAML ]

```
rules:
    - name: MyMonitorRule
      ruleTypeId:
        category: Rule
        owner: AWS
        provider: CloudWatchAlarm
        version: '1'
      configuration:
        AlarmName: CWAlarm
        WaitTime: '1'
      inputArtifacts: []
      region: us-east-1
```

------
#### [ JSON ]

```
                            "rules": [
                                {
                                    "name": "MyMonitorRule",
                                    "ruleTypeId": {
                                        "category": "Rule",
                                        "owner": "AWS",
                                        "provider": "CloudWatchAlarm",
                                        "version": "1"
                                    },
                                    "configuration": {
                                        "AlarmName": "CWAlarm",
                                        "WaitTime": "1"
                                    },
                                    "inputArtifacts": [],
                                    "region": "us-east-1"
                                }
                            ]
                        }
```

------

## 另请参阅
<a name="rule-reference-CloudWatchAlarm-links"></a>

以下相关资源可在您使用此规则时为您提供帮助。
+ [创建“失败时”条件](stage-conditions.md#stage-conditions-onfailure) – 本节介绍使用警报规则创建“失败时”条件的步骤。

# CodeBuild 规则
<a name="rule-reference-CodeBuild"></a>

创建条件时，可以添加 CodeBuild 规则。本节提供对规则参数的参考。有关规则和条件的更多信息，请参阅[阶段条件是如何运作的？](concepts-how-it-works-conditions.md)。

您可以使用 CodeBuild 规则来创建一个条件，当构建项目成功运行且符合规则条件时触发，例如构建成功运行且符合 beforeEntry 条件时。

**注意**  
对于使用**跳过**结果配置的 beforeEntry 条件，只有以下规则可用：`LambdaInvoke` 和 `VariableCheck`。

**Topics**
+ [服务角色策略权限](#rule-reference-Commands-policy)
+ [规则类型](#rule-reference-Commands-type)
+ [配置参数](#rule-reference-Commands-config)
+ [规则配置示例](#rule-reference-Commands-example)
+ [另请参阅](#rule-reference-Commands-links)

## 服务角色策略权限
<a name="rule-reference-Commands-policy"></a>

对于该规则的权限，请将以下内容添加到 CodePipeline 服务角色策略语句中。将权限范围缩小到资源级别。

```
{
    "Effect": "Allow",
    "Action": [
        "codebuild:BatchGetBuilds",
        "codebuild:StartBuild"
    ],
    "Resource": "resource_ARN"
},
```

## 规则类型
<a name="rule-reference-Commands-type"></a>
+ 类别：`Rule`
+ 拥有者：`AWS`
+ 提供方：`CodeBuild`
+ 版本：`1`

## 配置参数
<a name="rule-reference-Commands-config"></a>

**ProjectName**  
必需：是  
`ProjectName` 是 CodeBuild 中构建项目的名称。

**PrimarySource**  
必需：有条件  
`PrimarySource` 参数的值必须是操作的一个输入构件的名称。CodeBuild 会查找 buildspec 文件，并在包含此构件的解压缩版本的目录中运行 buildspec 命令。  
如果为一个 CodeBuild 操作指定多个输入构件，则此参数是必需的。当操作仅有一个源构件时，`PrimarySource` 构件默认为该构件。

**BatchEnabled**  
必需：否  
`BatchEnabled` 参数的布尔值允许操作在同一个构建执行中运行多个构建。  
启用此选项后，`CombineArtifacts` 选项将变为可用。  
有关启用批量构建的管道示例，请参阅 [CodePipeline 与 CodeBuild 和批量构建集成](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-batch.html)。

**CombineArtifacts**  
必需：否  
`CombineArtifacts` 参数的布尔值将来自一个批量构建的所有构建构件合并为单个构件文件，将其用于构建操作。  
要使用此选项，必须启用 `BatchEnabled` 参数。

**EnvironmentVariables**  
必需：否  
此参数的值用于为管道中的 CodeBuild 操作设置环境变量。`EnvironmentVariables` 参数的值采用环境变量对象的 JSON 数组形式。请参阅[操作声明（CodeBuild 示例）](action-reference-CodeBuild.md#action-reference-CodeBuild-example)中的示例参数。  
每个对象有三个均为字符串的部分：  
+ `name`：环境变量的名称或键。
+ `value`：环境变量的值。使用 `PARAMETER_STORE` 或 `SECRETS_MANAGER` 类型时，此值必须分别是您分别存储在 AWS Systems Manager Parameter Store 中的参数的名称，或您存储在 AWS Secrets Manager 中的密钥。
**注意**  
我们强烈建议不要使用环境变量存储敏感值，尤其是 AWS 凭证。当您使用 CodeBuild 控制台或 AWS CLI 时，环境变量将以明文显示。对于敏感值，我们建议您改用 `SECRETS_MANAGER` 类型。
+ `type`：（可选）环境变量的类型。有效值为 `PARAMETER_STORE`、`SECRETS_MANAGER` 或 `PLAINTEXT`。如果未指定，则此值默认为 `PLAINTEXT`。
为环境变量配置输入 `name`、`value` 和 `type` 时，特别是在环境变量包含 CodePipeline 输出变量语法时，请不要超过配置值字段的 1000 字符限制。如果超过此限制，将会返回验证错误。
有关更多信息，请参阅 AWS CodeBuild API 参考中的 [EnvironmentVariable](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html)。有关采用环境变量（解析为 GitHub 分支名称）的 CodeBuild 操作示例，请参阅[示例：使用带有 CodeBuild 环境 BranchName 变量的变量](actions-variables.md#actions-variables-examples-env-branchname)。

## 规则配置示例
<a name="rule-reference-Commands-example"></a>

------
#### [ YAML ]

```
name: codebuild-rule
ruleTypeId:
  category: Rule
  owner: AWS
  provider: CodeBuild
  version: '1'
configuration:
  ProjectName: my-buildproject
  EnvironmentVariables: '[{"name":"VAR1","value":"variable","type":"PLAINTEXT"}]'
inputArtifacts:
- name: SourceArtifact
region: us-east-1
```

------
#### [ JSON ]

```
{
    "name": "codebuild-rule",
    "ruleTypeId": {
        "category": "Rule",
        "owner": "AWS",
        "provider": "CodeBuild",
        "version": "1"
    },
    "configuration": {
        "ProjectName": "my-buildproject"
    },
    "inputArtifacts": [
        {
            "name": "SourceArtifact",
            "EnvironmentVariables": "[{\"name\":\"VAR1\",\"value\":\"variable\",\"type\":\"PLAINTEXT\"}]"
        }
    ],
    "region": "us-east-1"
}
```

------

## 另请参阅
<a name="rule-reference-Commands-links"></a>

以下相关资源可在您使用此规则时为您提供帮助。
+ 有关规则和条件的更多信息，请参阅《CodePipeline API 指南》**中的[条件](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_Condition.html)、[RuleTypeId](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleTypeId.html) 和 [RuleExecution](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleExecution.html)。

# 命令
<a name="rule-reference-Commands"></a>

创建条件时，可以添加 `Commands` 规则。本节提供对规则参数的参考。有关规则和条件的更多信息，请参阅[阶段条件是如何运作的？](concepts-how-it-works-conditions.md)。

您可以使用 `Commands` 规则来创建成功命令满足规则标准的条件，例如 beforeEntry 条件下成功命令的输出和文件路径。

**注意**  
对于使用**跳过**结果配置的 beforeEntry 条件，只有以下规则可用：`LambdaInvoke` 和 `VariableCheck`。

**Topics**
+ [Commands 规则的注意事项](#rule-reference-Commands-considerations)
+ [服务角色策略权限](#rule-reference-Commands-policy)
+ [规则类型](#rule-reference-Commands-type)
+ [配置参数](#rule-reference-Commands-config)
+ [规则配置示例](#rule-reference-Commands-example)
+ [另请参阅](#rule-reference-Commands-links)

## Commands 规则的注意事项
<a name="rule-reference-Commands-considerations"></a>

Commands 规则的注意事项如下。
+ 命令规则使用与 CodeBuild 操作类似的 CodeBuild 资源，同时允许在虚拟计算实例中使用外壳环境命令，而无需关联或创建构建项目。
**注意**  
运行命令规则将在中产生单独的费用。 AWS CodeBuild
+ 由于中的 Commands 规则 CodePipeline 使用 CodeBuild 资源，因此操作运行的生成将归因于中账户的生成限制 CodeBuild。Commands 规则运行的构建将计入为该账户配置的并发构建限制。
+ 根据构建，使用命令规则的 CodeBuild构建的超时时间为 55 分钟。
+ 计算实例在中使用隔离的构建环境 CodeBuild。
**注意**  
由于隔离构建环境是在账户级别使用的，因此一个实例可能会被重复用于另一个管道的执行。
+ 支持除多行格式外的所有格式。输入命令时必须使用单行格式。
+ 对于此规则， CodePipeline 将担任管道服务角色并使用该角色允许在运行时访问资源。建议配置服务角色，以便将权限范围缩小到操作级别。
+ 中详细介绍了添加到 CodePipeline 服务角色的权限[为 CodePipeline 服务角色添加权限](how-to-custom-role.md#how-to-update-role-new-services)。
+ 在控制台中查看日志所需的权限详见[在控制台中查看计算日志所需的权限](security-iam-permissions-console-logs.md)。在以下示例屏幕中，使用**日志**链接查看日志中成功的命令规则的 CloudWatch 日志。  
![\[带有 Commands 规则的管道的状态页面\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/commands-rule-status.png)  
![\[包含命令规则 CloudWatch 的管道的 “日志” 页面\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/commands-rule-logs.png)
+ 与中的其他操作不同 CodePipeline，您无需在操作配置中设置字段；而是在操作配置之外设置操作配置字段。

## 服务角色策略权限
<a name="rule-reference-Commands-policy"></a>

 CodePipeline 运行规则时，使用管道名称 CodePipeline 创建日志组，如下所示。这样就可以使用管道名称缩小日志资源的权限范围。

```
/aws/codepipeline/MyPipelineName
```

如果您使用的是现有的服务角色，要使用 Commands 操作，需要为服务角色添加以下权限。
+ 日志：CreateLogGroup
+ 日志：CreateLogStream
+ 日志：PutLogEvents

在服务角色策略声明中，将权限范围缩小到管道级别，如下例所示。

```
{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
    ],
    "Resource": "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"
}
```

要在控制台中使用操作详细信息对话框页面查看日志，必须在控制台角色中添加查看日志的权限。有关更多信息，请参阅[在控制台中查看计算日志所需的权限](security-iam-permissions-console-logs.md)中的控制台权限策略示例。

## 规则类型
<a name="rule-reference-Commands-type"></a>
+ 类别：`Rule`
+ 拥有者：`AWS`
+ 提供方：`Commands`
+ 版本：`1`

## 配置参数
<a name="rule-reference-Commands-config"></a>

**命令**  
是否必需：是  
您可以为要运行的 `Commands` 规则提供 Shell 命令。在控制台中，命令分行输入。在 CLI 中，命令以单独字符串的形式输入。  
不支持多行格式，这会导致出现错误消息。在 **Commands** 字段中输入命令时必须使用单行格式。
下面详细介绍了 Commands 规则使用的默认计算。有关更多信息，请参阅 CodeBuild 用户指南中的[构建环境计算模式和类型](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html)参考。  
+ **CodeBuild 图片：aws/codebuild/amazonlinux2-x86\$164 standard:** 5.0
+ **计算类型：**Linux Small
+ **环境计算类型值：BUILD\$1 \$1SMAL** L GENERAL1
+ **环境类型值：**LINUX\$1CONTAINER

## 规则配置示例
<a name="rule-reference-Commands-example"></a>

------
#### [ YAML ]

```
result: FAIL
rules:
- name: CommandsRule
  ruleTypeId:
    category: Rule
    owner: AWS
    provider: Commands
    version: '1'
  configuration: {}
  commands:
  - ls
  - printenv
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

------
#### [ JSON ]

```
{
    "result": "FAIL",
    "rules": [
        {
            "name": "CommandsRule",
            "ruleTypeId": {
                "category": "Rule",
                "owner": "AWS",
                "provider": "Commands",
                "version": "1"
            },
            "configuration": {},
            "commands": [
                "ls",
                "printenv"
            ],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
}
```

------

## 另请参阅
<a name="rule-reference-Commands-links"></a>

以下相关资源可在您使用此规则时为您提供帮助。
+ [有关规则和条件的更多信息，请参阅 *CodePipeline API 指南[RuleExecution](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleExecution.html)*中的条件和。[RuleTypeId](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleTypeId.html)](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_Condition.html)

# DeploymentWindow
<a name="rule-reference-DeploymentWindow"></a>

创建条件时，可以添加 `DeploymentWindow` 规则。本节提供对规则参数的参考。有关规则和条件的更多信息，请参阅[阶段条件是如何运作的？](concepts-how-it-works-conditions.md)。

**Topics**
+ [规则类型](#rule-reference-DeploymentWindow-type)
+ [配置参数](#rule-reference-DeploymentWindow-config)
+ [规则配置示例](#rule-reference-DeploymentWindow-example)
+ [另请参阅](#rule-reference-DeploymentWindow-links)

## 规则类型
<a name="rule-reference-DeploymentWindow-type"></a>
+ 类别：`Rule`
+ 拥有者：`AWS`
+ 提供方：`DeploymentWindow`
+ 版本：`1`

## 配置参数
<a name="rule-reference-DeploymentWindow-config"></a>

**Cron**  
是否必需：是  
定义允许部署的天数和时间的表达式。Cron 表达式由 6 个必需字段和 1 个可选字段组成，中间用空格隔开。通过 cron 表达式字段，您可以使用 cron 表达式指定计划模式，如下所示。    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/rule-reference-DeploymentWindow.html)
+ “\$1”字符用于指定所有值。例如，minute 字段中的“\$1”表示“每分钟”。
+ '？' day-of-month和 day-of-week字段允许使用字符。此字符用于指定“无特定值”。当您需要在两个字段中的一个字段指定某些内容，而另一个字段不需要时，此字符非常有用。
+ “-”字符用于指定范围。例如，hour 字段中的“10-12”表示“10、11 和 12 小时”。
+ “,”字符用于指定附加值。例如，该 day-of-week字段中的 “星期一、星期三、星期五” 表示 “星期一、星期三和星期五”。
+ “/”字符用于指定增量。例如，seconds 字段中的“0/15”表示“0、15、30 和 45 秒”。seconds 字段中的“5/15”表示“5、20、35 和 50 秒”。在“/”前指定“\$1”相当于指定 0 为起始值。
+  day-of-month和字段允许使用 'L' day-of-week 字符。此字符是“last”的简写，但在两个字段中含义不同。例如，该 day-of-month字段中的值 “L” 表示 “该月的最后一天” ——1 月为 31 日，非闰年为 2 月，第 28 天。如果在 day-of-week现场单独使用，则仅表示 “7” 或 “SAT”。但是，如果在 day-of-week字段中使用另一个值之后，则表示 “<specified\$1day>该月的最后一天” ——例如，“6L” 表示 “该月的最后一个星期五”。您还可以指定与该月最后一天的偏移量，例如 “L-3”，表示日历月中的某 third-to-last一天。
+ 该字段允许使用 'W' day-of-month 字符。此字符用于指定离给定日期最近的工作日（星期一至星期五）。例如，如果您要指定 “15W” 作为该 day-of-month字段的值，则含义是：“距离该月15日最近的工作日”。因此，如果 15 日是星期六，触发器将在 14 日星期五触发。如果 15 日是星期日，触发器将在 16 日星期一触发。如果 15 日是星期二，那么将在 15 日星期二触发。
+ 也可以将 “L” 和 “W” 字符组合在一起，使 day-of-month表达式生成 “LW”，意思是 “该月的最后一个工作日”。
+ 该字段允许使用 '\$1' day-of-week 字符。此字符用于指定本月的“第 n 个”<specified\$1day> 日。例如，该 day-of-week字段中的 “6 \$13” 值表示该月的第三个星期五（第 6 天 = 星期五，“\$13” = 该月的第三个星期五）。
+ 合法字符以及月份和星期的名称不区分大小写。

**TimeZone**  
必需：否  
部署窗口的时区。正则表达式匹配以下格式的模式：  
+ **Region/City 格式**。该值与格式 Region/City 为 “地区/城市\$1城市” 的时区相匹配。例如，`America/New_York` 或 `Europe/Berlin`。
+ **UTC 格式**。该值与 UTC 字符串相匹配，后面可选择 \$1HH:MM 或 -HH:MM 格式的偏移量。例如 `UTC`、`UTC+05:30` 或 `UTC-03:00`。如果此参数未作其他设置，这是默认格式。
+ **缩写格式**。该值匹配 3 至 5 个字符的时区缩写。例如，`EST` 或 `IST`。

  有关有效 TimeZone ID 值的表，请参阅 [https://docs.oracle.com/middleware/1221/ wcs/tag-ref/MISC/TimeZones](https://docs.oracle.com/middleware/1221/wcs/tag-ref/MISC/TimeZones.html) .html。请注意，某些缩写可以是多种不同词组的缩写，如 CST 表示 Central Standard Time、China Standard Time 和 Cuba Standard Time。

## 规则配置示例
<a name="rule-reference-DeploymentWindow-example"></a>

------
#### [ YAML ]

```
- name: MyDeploymentRule
  ruleTypeId:
    category: Rule
    owner: AWS
    provider: DeploymentWindow
    version: '1'
  configuration:
    Cron: 0 0 9-17 ? * MON-FRI *
    TimeZone: PST
  inputArtifacts: []
  region: us-east-1
```

------
#### [ JSON ]

```
[
                    {
                        "name": "MyDeploymentRule",
                        "ruleTypeId": {
                            "category": "Rule",
                            "owner": "AWS",
                            "provider": "DeploymentWindow",
                            "version": "1"
                        },
                        "configuration": {
                            "Cron": "0 0 9-17 ? * MON-FRI *",
                            "TimeZone": "PST"
                        },
                        "inputArtifacts": [],
                        "region": "us-east-1"
                    }
                ]
```

------

## 另请参阅
<a name="rule-reference-DeploymentWindow-links"></a>

以下相关资源可在您使用此规则时为您提供帮助。
+ [创建“成功时”条件](stage-conditions.md#stage-conditions-onsuccess) – 本节介绍使用部署窗口规则创建“成功时”条件的步骤。
+ [有关规则和条件的更多信息，请参阅 *CodePipeline API 指南[RuleExecution](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleExecution.html)*中的条件和。[RuleTypeId](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleTypeId.html)](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_Condition.html)

# LambdaInvoke
<a name="rule-reference-LambdaInvoke"></a>

创建条件时，可以添加 `LambdaInvoke` 规则。本节提供对规则参数的参考。有关规则和条件的更多信息，请参阅[阶段条件是如何运作的？](concepts-how-it-works-conditions.md)。

您必须已经在 Lambda 中创建了一个函数作为单独的资源。

**Topics**
+ [规则类型](#rule-reference-CloudWatchAlarm-type)
+ [配置参数](#rule-reference-LambdaInvoke-config)
+ [规则配置示例](#rule-reference-LambdaInvoke-example)
+ [另请参阅](#rule-reference-LambdaInvoke-links)

## 规则类型
<a name="rule-reference-CloudWatchAlarm-type"></a>
+ 类别：`Rule`
+ 拥有者：`AWS`
+ 提供方：`LambdaInvoke`
+ 版本：`1`

## 配置参数
<a name="rule-reference-LambdaInvoke-config"></a>

**FunctionName**  
必需：是  
Lambda 函数的名称。

**UserParameters**  
必需：否  
这些参数以键值对格式作为函数的输入。

## 规则配置示例
<a name="rule-reference-LambdaInvoke-example"></a>

------
#### [ YAML ]

```
- name: MyLambdaRule
  ruleTypeId:
    category: Rule
    owner: AWS
    provider: LambdaInvoke
    version: '1'
  configuration:
    FunctionName: my-function
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

------
#### [ JSON ]

```
[
    {
        "name": "MyLambdaRule",
        "ruleTypeId": {
            "category": "Rule",
            "owner": "AWS",
            "provider": "LambdaInvoke",
            "version": "1"
        },
        "configuration": {
            "FunctionName": "my-function"
        },
        "inputArtifacts": [
            {
                "name": "SourceArtifact"
            }
        ],
        "region": "us-east-1"
    }
]
```

------

## 另请参阅
<a name="rule-reference-LambdaInvoke-links"></a>

以下相关资源可在您使用此规则时为您提供帮助。
+ [创建“失败时”条件](stage-conditions.md#stage-conditions-onfailure) – 本节介绍使用警报规则创建“失败时”条件的步骤。

# VariableCheck
<a name="rule-reference-VariableCheck"></a>

创建条件时，可以添加 `VariableCheck` 规则。本节提供对规则参数的参考。有关规则和条件的更多信息，请参阅[阶段条件是如何运作的？](concepts-how-it-works-conditions.md)。

您可以使用 `VariableCheck` 规则来创建条件，根据提供的表达式检查输出变量。当变量值满足规则条件（如值等于或大于指定的输出变量）时，则规则通过检查。

**Topics**
+ [规则类型](#rule-reference-VariableCheck-type)
+ [配置参数](#rule-reference-VariableCheck-config)
+ [规则配置示例](#rule-reference-VariableCheck-example)
+ [另请参阅](#rule-reference-VariableCheck-links)

## 规则类型
<a name="rule-reference-VariableCheck-type"></a>
+ 类别：`Rule`
+ 拥有者：`AWS`
+ 提供方：`VariableCheck`
+ 版本：`1`

## 配置参数
<a name="rule-reference-VariableCheck-config"></a>

**运算符**  
是否必需：是  
表示对变量检查执行哪种操作的运算符。  
在下面的示例中，将检查存储库名称的输出变量是否等于 `MyDemoRepo`。  

```
        "configuration": {
            "Variable": "#{SourceVariables.RepositoryName}",
            "Value": "MyDemoRepo",
            "Operator": "EQ"
        },
```
以下运算符可用于创建表达式，如下所示。  
+ **等于** - 选择此运算符可检查变量是否等于字符串值。

  **CLI 参数：**`EQ`
+ **包含** - 选择此运算符可检查变量是否包含字符串值作为子字符串。

  **CLI 参数：**`CONTAINS`
+ **匹配** - 选择此运算符可检查变量是否匹配给定的正则表达式字符串值。

  中的所有正则表达式都 CodePipeline 符合 Java 正则表达式语法。有关 Java 正则表达式语法及其构造的全面说明，请参阅 [java.util.regex.Pattern](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html)。

  **CLI 参数：**`MATCHES`
+ **不等于** - 选择此运算符可检查变量是否不等于字符串值。

  **CLI 参数：**`NE`

**变量**  
是否必需：是  
要检查的管道变量。

**值**  
是否必需：是  
要参照检查的表达式值。  
在下面的示例中，将检查存储库名称的输出变量是否等于 `MyDemoRepo`。  

```
        "configuration": {
            "Variable": "#{SourceVariables.RepositoryName}",
            "Value": "MyDemoRepo",
            "Operator": "EQ"
        },
```

在下面的 JSON 示例中，定义了两个单独的规则，一个用于检查存储库和格式为 \$1 \$1SourceVariables的分支名称的`EQ`（等于）语句。 RepositoryName\$1 然后检查格式为 \$1 \$1的提交消息输出变量SourceVariables。`CONTAINS` CommitMessage\$1 与提供的值 “更新” 对比。

```
  "beforeEntry": {
                    "conditions": [
                        {
                            "result": "FAIL",
                            "rules": [
                                {
                                    "name": "MyVarCheckRule",
                                    "ruleTypeId": {
                                        "category": "Rule",
                                        "owner": "AWS",
                                        "provider": "VariableCheck",
                                        "version": "1"
                                    },
                                    "configuration": {
                                        "Operator": "EQ",
                                        "Value": "MyDemoRepo",
                                        "Variable": "#{SourceVariables.RepositoryName}"
                                    },
                                    "inputArtifacts": [],
                                    "region": "us-east-1"
                                },
                                {
                                    "name": "MyVarCheckRuleContains",
                                    "ruleTypeId": {
                                        "category": "Rule",
                                        "owner": "AWS",
                                        "provider": "VariableCheck",
                                        "version": "1"
                                    },
                                    "configuration": {
                                        "Operator": "CONTAINS",
                                        "Value": "update",
                                        "Variable": "#{SourceVariables.CommitMessage}"
                                    },
                                    "inputArtifacts": [],
                                    "region": "us-east-1"
                                }
                            ]
                        }
                    ]
                }
            }
        ],
```

## 规则配置示例
<a name="rule-reference-VariableCheck-example"></a>

------
#### [ YAML ]

```
- name: MyVariableCheck
  ruleTypeId:
    category: Rule
    owner: AWS
    provider: VariableCheck
    version: '1'
  configuration:
    Variable: "#{SourceVariables.RepositoryName}"
    Value: MyDemoRepo
    Operator: EQ
  inputArtifacts: []
  region: us-west-2
```

------
#### [ JSON ]

```
"rules": [
    {
        "name": "MyVariableCheck",
        "ruleTypeId": {
            "category": "Rule",
            "owner": "AWS",
            "provider": "VariableCheck",
            "version": "1"
        },
        "configuration": {
            "Variable": "#{SourceVariables.RepositoryName}",
            "Value": "MyDemoRepo",
            "Operator": "EQ"
        },
        "inputArtifacts": [],
        "region": "us-west-2"
    }
]
```

------

## 另请参阅
<a name="rule-reference-VariableCheck-links"></a>

以下相关资源可在您使用此规则时为您提供帮助。
+ [教程：为管道创建变量检查规则作为“入口”条件](tutorials-varcheckrule.md) – 本节提供了一个教程，其中包含使用变量检查规则创建“进入时”条件的步骤。
+ [变量参考](reference-variables.md) – 本节提供管道变量的参考信息和示例。
+ [有关规则和条件的更多信息，请参阅 *CodePipeline API 指南[RuleExecution](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleExecution.html)*中的条件和。[RuleTypeId](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_RuleTypeId.html)](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_Condition.html)