

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立提取請求的核准規則
<a name="how-to-create-pull-request-approval-rule"></a>

建立提取請求的核准規則會要求使用者核准提取請求，然後程式碼才能合併到目的地分支，有助於確保程式碼的品質。您可以指定必須核准提取請求的使用者數目。您也可以為規則指定使用者核准集區。如果您這麼做，則只有來自這些使用者的核准才計入規則所需的核准數目中。

**注意**  
您也可以建立核准規則範本，這可協助您跨將套用至每個提取請求的儲存庫自動建立核准規則。如需詳細資訊，請參閱[使用核准規則範本](approval-rule-templates.md)。

您可以使用 AWS CodeCommit 主控台或 AWS CLI 來建立儲存庫的核准規則。

**Topics**
+ [建立提取請求的核准規則 （主控台）](#how-to-create-pull-request-approval-rule-console)
+ [建立提取請求的核准規則 (AWS CLI)](#how-to-create-pull-request-approval-rule-cli)

## 建立提取請求的核准規則 （主控台）
<a name="how-to-create-pull-request-approval-rule-console"></a>

您可以使用 CodeCommit 主控台為 CodeCommit 儲存庫中的提取請求建立核准規則。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要為提取請求建立核准規則的儲存庫名稱。

1. 在導覽窗格中，選擇 **Pull requests (提取請求)**。

1. 從清單中選擇您要建立核准規則的提取請求。您只能對未結案的提取請求建立核准規則。  
![CodeCommit 主控台中儲存庫的提取請求清單。](http://docs.aws.amazon.com/zh_tw/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.aws.amazon.com/zh_tw/codecommit/latest/userguide/images/codecommit-create-approval-rule.png)

1. (選擇性) 如果提取請求的核准必須來自特定使用者群組，請在 **Approval rule members (核准規則成員)** 中選擇 **Add (新增)**。在 **Approver type (核准者類型)** 中，選擇以下其中一項：
   + **IAM 使用者名稱或擔任的角色**：此選項會將 AWS 您用來登入的帳戶預先填入帳戶 ID，而且只需要名稱。它可用於名稱符合所提供名稱的 IAM 使用者和聯合存取使用者。這是非常強大的選項，可提供極大的彈性。例如，如果您使用 Amazon Web Services 帳戶 123456789012 登入並選擇此選項，並且您指定 **Mary\_Major**，則以下所有項目都會計入來自該使用者的核准：
     + 帳戶中的 IAM 使用者 (`arn:aws:iam::123456789012:user/Mary_Major`)
     + 在 IAM 中識別為 Mary\_Major (`arn:aws:sts::123456789012:federated-user/Mary_Major`) 的聯合身分使用者

     除非您包含萬用字元 (`*Mary_Major`)，否則此選項無法識別擔任角色 **CodeCommitReview** 且角色工作階段名稱為 Mary\_Major (`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`) 的某人的作用中工作階段。您也可以明確指定角色名稱 (`CodeCommitReview/Mary_Major`)。
   + **完整 ARN**：此選項可讓您指定 IAM 使用者或角色的完整 Amazon Resource Name (ARN)。此選項也支援其他 AWS 服務所使用的擔任角色，例如 AWS Lambda 和 AWS CodeBuild。針對擔任的角色，ARN 格式應為 `arn:aws:sts::{{AccountID}}:assumed-role/{{RoleName}}` (若為角色) 和 `arn:aws:sts::{{AccountID}}:assumed-role/{{FunctionName}}` (若為函數)。

   如果您選擇 **IAM 使用者名稱或擔任的角色**作為核准者類型，請在**值**中輸入 IAM 使用者或角色的名稱，或輸入使用者或角色的完整 ARN。再次選擇 **Add (新增)**，以新增更多使用者或角色，直到核准要計入所需核准數目中的所有使用者或角色，都已新增為止。

   這兩種核准者類型都允許您在值中使用萬用字元 (\*)。例如，如果您選擇 **IAM 使用者名稱或擔任的角色**選項，並指定 **CodeCommitReview/\***，則擔任 角色的所有使用者**CodeCommitReview**都會計入核准集區中。他們的個別角色工作階段名稱會計入所需的核准者數目。如此一來，Mary\_Major 和 Li\_Juan 在登入並擔任 `CodeCommitReview` 時都算作核准。如需 IAM ARNs、萬用字元和格式的詳細資訊，請參閱 [IAM 識別符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)。
**注意**  
核准規則不支援跨帳戶核准。

1. 核准規則設定完成後，請選擇 **Submit (提交)**。

 

## 建立提取請求的核准規則 (AWS CLI)
<a name="how-to-create-pull-request-approval-rule-cli"></a>

若要搭配 CodeCommit 使用 AWS CLI 命令，請安裝 AWS CLI。如需詳細資訊，請參閱[命令列參考](cmd-ref.md)。

## 在 CodeCommit 儲存庫中建立提取請求的核准規則

+ 執行 **create-pull-request-approval-rule** 命令，並指定：
  + 提取請求的 ID (使用 **--id** 選項)。
  + 核准規則的名稱 (使用 **--approval-rule-name** 選項)。
  + 核准規則的內容 (使用 **--approval-rule-content** 選項)。

  建立核准規則時，您有兩種方式在核准集區中指定核准者：
  + **CodeCommitApprovers**：此選項只需要 Amazon Web Services 帳戶和資源。它可用於名稱符合所提供資源名稱的 IAM 使用者和聯合存取使用者。這是非常強大的選項，可提供極大的彈性。例如，如果您指定 Amazon Web Services 帳戶 123456789012 和 **Mary\_Major**，下列所有項目都會視為來自該使用者的核准：
    + 帳戶中的 IAM 使用者 (`arn:aws:iam::123456789012:user/Mary_Major`)
    + 在 IAM 中識別為 Mary\_Major (`arn:aws:sts::123456789012:federated-user/Mary_Major`) 的聯合身分使用者

    除非您包含萬用字元 (`*Mary_Major`)，否則此選項無法識別擔任角色 **CodeCommitReview** 且角色工作階段名稱為 Mary\_Major (`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`) 的某人的作用中工作階段。
  + **完整 ARN**：此選項可讓您指定 IAM 使用者或角色的完整 Amazon Resource Name (ARN)。

  如需 IAM ARNs、萬用字元和格式的詳細資訊，請參閱 [IAM 識別符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)。

  下列範例針對 ID 為 `27` 的提取請求，建立名為 `Require two approved approvers` 的核准規則。此規則指定需要有來自核准集區的兩個核准。集區包含存取 CodeCommit 並在 Amazon Web Services `123456789012` 帳戶中擔任 角色**CodeCommitReview**的所有使用者。它還包括`Nikhil_Jayashankar`在相同 Amazon Web Services 帳戶中名為 的 IAM 使用者或聯合身分使用者：

  ```
  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/*\"]}]}"
  ```