

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

# 命令
<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)