

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

# 为拉取请求创建审批规则
<a name="how-to-create-pull-request-approval-rule"></a>

为拉取请求创建审批规则，要求用户在将代码合并到目标分支之前对拉取请求进行审批，从而有助于确保代码的质量。您可以指定必须审批拉取请求的用户数量。您还可以为规则指定用户审批池。如果这样做，则只有这些用户的审批计入规则的所需审批数量。

**注意**  
您还可以创建审批规则模板，帮助您跨存储库自动创建要应用于每个拉取请求的审批规则。有关更多信息，请参阅 [使用审批规则模板](approval-rule-templates.md)。

您可以使用 Amazon CodeCommit 控制台或为您的存储库创建批准规则。 Amazon CLI 

**Topics**
+ [为拉取请求创建审批规则（控制台）](#how-to-create-pull-request-approval-rule-console)
+ [为拉取请求创建审批规则 (Amazon CLI)](#how-to-create-pull-request-approval-rule-cli)

## 为拉取请求创建审批规则（控制台）
<a name="how-to-create-pull-request-approval-rule-console"></a>

您可以使用 CodeCommit 控制台为 CodeCommit 仓库中的拉取请求创建批准规则。

1. 在 [https://console.aws.amazon.com/codesuite/codemmit](https://console.amazonaws.cn/codesuite/codecommit/home) /home 打开 CodeCommit 控制台。

1. 在 **Repositories (存储库)** 中，选择要在其中为拉取请求创建审批规则的存储库的名称。

1. 在导航窗格中，选择**拉取请求**。

1. 从列表中选择要为其创建审批规则的拉取请求。您只能为处于打开状态的拉取请求创建审批规则。  
![\[CodeCommit 控制台中仓库的拉取请求列表。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. 在拉取请求中，选择 **Approvals (审批)**，然后选择 **Create approval rule (创建审批规则)**。

1. 在 **Rule name (规则名称)** 中，为规则指定一个描述性名称，以便您知道其用途。例如，如果您希望拉取请求在合并之前，必须由两人对其进行审批，那么可以将该规则命名为 **Require two approvals before merge**。
**注意**  
审批规则在创建之后，其名称无法更改。

   在 **Number of approvals needed (需要的审批数量)** 中，输入所需的数量。默认 为 1。  
![\[为拉取请求创建审批规则\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-create-approval-rule.png)

1. （可选）如果您希望必须由特定用户组对拉取请求进行审批，那么可以在 **Approval rule members (审批规则成员)** 中，选择 **Add (添加)**。在 **Approver type (审批人类型)** 中，选择以下选项之一：
   + **IAM 用户名或代入的角色**：此选项会预先填入您用于登录的账户的 Amazon 账户 ID，并且只需要一个名称。它可以用于 IAM 用户，以及名称与所提供名称相匹配的联合访问用户。这是一个非常强大的选项，提供了极大的灵活性。例如，如果您使用 Amazon Web Services 账户 123456789012 登录并选择了此选项，而且指定了 **Mary\$1Major**，那么以下所有用户都将计为来自该用户的审批：
     + 账户中的 IAM 用户 (`arn:aws:iam::123456789012:user/Mary_Major`)
     + 在 IAM 中标识为 Mary\$1Major 的联合用户 (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

     除非包含通配符 (`*Mary_Major`)，否则此选项无法识别代入 **CodeCommitReview** 角色且角色会话名称为 Mary\$1Major (`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`) 的某人的活动会话。您还可以显式指定角色名称 (`CodeCommitReview/Mary_Major`)。
   + **完全限定的 ARN**：此选项允许您指定 IAM 用户或角色的完全限定 Amazon 资源名称 (ARN)。此选项还支持其他 Amazon 服务（例如 Amazon Lambda 和）使用的代入角色 Amazon CodeBuild。对于代入的角色，ARN 格式应为 `arn:aws:sts::AccountID:assumed-role/RoleName`（适用于角色）和 `arn:aws:sts::AccountID:assumed-role/FunctionName`（适用于函数）。

   如果选择 **IAM 用户名或代入的角色**作为审批人类型，那么请在**值**中输入 IAM 用户或角色的名称，或者输入用户或角色的完全限定 ARN。再次选择 **Add (添加)** 可添加多个用户或角色，直到您已添加了其审批计入所需审批数量的所有用户或角色。

   这两种审批人类型都允许在其值中使用通配符 (\$1)。例如，如果选择 **IAM 用户名或代入的角色**选项，并且指定 **CodeCommitReview/\$1**，那么代入 **CodeCommitReview** 角色的所有用户都将计入审批池中。他们各自的角色会话名称将计入所需的审批人数量。按照此方法，Mary\$1Major 和 Li\$1Juan 在登录并代入 `CodeCommitReview` 角色时，都计为审批。有关 IAM ARNs、通配符和格式的更多信息，请参阅 [IAM 标识符](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)。
**注意**  
审批规则不支持跨账户审批。

1. 完成审批规则的配置之后，选择 **Submit (提交)**。

 

## 为拉取请求创建审批规则 (Amazon CLI)
<a name="how-to-create-pull-request-approval-rule-cli"></a>

要将 Amazon CLI 命令与一起使用 CodeCommit，请安装 Amazon CLI。有关更多信息，请参阅 [命令行参考](cmd-ref.md)。

## 为 CodeCommit 仓库中的拉取请求创建批准规则

+ 运行 **create-pull-request-approval-rule** 命令，并指定：
  + 拉取请求的 ID（使用 **--id** 选项）。
  + 审批规则的名称（使用 **--approval-rule-name** 选项）。
  + 审批规则的内容（使用 **--approval-rule-content** 选项）。

  创建审批规则时，可以按照以下两种方式之一指定审批池中的审批人：
  + **CodeCommitApprovers**：此选项只需要一个亚马逊 Web Services 账户和资源。它可以用于 IAM 用户，以及名称与所提供资源名称相匹配的联合访问用户。这是一个非常强大的选项，提供了极大的灵活性。例如，如果指定 Amazon Web Services 账户 123456789012 和 **Mary\$1Major**，那么以下所有用户都将计为来自该用户的审批：
    + 账户中的 IAM 用户 (`arn:aws:iam::123456789012:user/Mary_Major`)
    + 在 IAM 中标识为 Mary\$1Major 的联合用户 (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

    除非包含通配符 (`*Mary_Major`)，否则此选项无法识别代入 **CodeCommitReview** 角色且角色会话名称为 Mary\$1Major (`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`) 的某人的活动会话。
  + **完全限定的 ARN**：此选项允许您指定 IAM 用户或角色的完全限定 Amazon 资源名称 (ARN)。

  有关 IAM ARNs、通配符和格式的更多信息，请参阅 [IAM 标识符](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)。

  以下示例为 ID 为 `27` 的拉取请求创建名为 `Require two approved approvers` 的审批规则。该规则指定审批池中需要两个审批。该池包括访问 CodeCommit 并担任 `123456789012` Amazon Web Ser **CodeCommitReview** vices 账户角色的所有用户。还包括同一 Amazon Web Services 账户中的 IAM 用户或名为 `Nikhil_Jayashankar` 的联合用户：

  ```
  aws codecommit create-pull-request-approval-rule --pull-request-id 27 --approval-rule-name "Require two approved approvers" --approval-rule-content "{\"Version\": \"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"CodeCommitApprovers:123456789012:Nikhil_Jayashankar\", \"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}"
  ```