プルリクエストの承認ルールを作成する - AWS CodeCommit

プルリクエストの承認ルールを作成する

プルリクエストの承認ルールを作成すると、コードを送信先ブランチにマージする前にプルリクエストの承認をユーザーにリクエストできるため、コードの品質が保証されます。プルリクエストを承認する必要があるユーザーの数を指定できます。ルールのユーザーの承認プールを指定することもできます。その場合、それらのユーザーからの承認のみがルールに必要な承認数にカウントされます。

注記

また、承認ルールテンプレートを作成することもできます。これにより、リポジトリ間で承認ルールの作成を自動化できます。詳細については、「承認ルールテンプレートの操作」を参照してください。

AWS CodeCommit コンソールまたは AWS CLI を使用してリポジトリの承認ルールを作成できます。

プルリクエストの承認ルールを作成する (コンソール)

CodeCommit コンソールを使用して、CodeCommit リポジトリ でプルリクエストの承認ルールを作成できます。

  1. https://console.aws.amazon.com/codesuite/codecommit/home にある CodeCommit コンソールを開きます。

  2. [Repositories (リポジトリ)] で、プルリクエストの承認ルールを作成するリポジトリの名前を選択します。

  3. ナビゲーションペインで、[Pull Requests (プルリクエスト)] を選択します。

  4. 承認ルールを作成するプルリクエストをリストから選択します。オープンプルリクエストの承認ルールのみを作成できます。

    
      CodeCommit コンソールのリポジトリのプルリクエストのリスト。
  5. プルリクエストで、[Approvals (承認)] を選択し、[Create approval rule (承認ルールの作成)] を選択します。

  6. [Rule name (ルール名)] で、ルールにわかりやすい名前を付けます。たとえば、プルリクエストをマージする前に 2 人のユーザーにプルリクエストの承認をリクエストする場合は、ルールに Require two approvals before merge という名前を付けます。

    注記

    承認ルールの作成後に名前を変更することはできません。

    [Number of approvals needed (必要な承認の数)] に、必要な数値を入力します。デフォルトは 1 です。

    
      プルリクエストの承認ルールの作成
  7. (オプション)プルリクエストの承認を特定のユーザーグループからリクエストする場合は、[Approval rule members (承認ルールのメンバー)] で [Add (追加)] を選択します。[Approver type (承認者のタイプ)] で、次のいずれかを選択します。

    • [IAM user name or assumed role (IAM ユーザー名または引き受けたロール)]: このオプションでは、サインインに使用したアカウントが AWS アカウント ID に事前入力され、名前のみが必要です。指定された名前と名前が一致する IAM ユーザーおよびフェデレーティッドアクセスユーザーの両方に使用できます。これは非常に強力なオプションで、柔軟性が大きく高まります。たとえば、AWS アカウント 123456789012 でサインインし、このオプションを選択して、Mary_Major を指定した場合、次のすべてがそのユーザーからの承認としてカウントされます。

      • アカウントの IAM ユーザー (arn:aws:iam::123456789012:user/Mary_Major)

      • Mary_Major として IAM で識別されるフェデレーティッドユーザー (arn:aws:sts::123456789012:federated-user/Mary_Major)

      このオプションは、ワイルドカード (*Mary_Major) を指定しない限り、ロールセッション名が Mary_Major (arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major) の CodeCommitReview のロールを引き受けるユーザーのアクティブなセッションを認識しません。ロール名を明示的に指定することもできます (CodeCommitReview/Mary_Major)。

    • [Fully qualified ARN (完全修飾 ARN)]: このオプションでは、IAM ユーザーまたはロールの完全修飾 Amazon リソースネーム (ARN) を指定できます。このオプションは、AWS Lambda や AWS CodeBuild などの 他の AWS サービスによって使用される委任ロールもサポートします。委任ロールの ARN 形式は、ロールの場合は arn:aws:sts::AccountID:assumed-role/RoleName、関数の場合は arn:aws:sts::AccountID:assumed-role/FunctionName です。

    承認者のタイプとして [IAM user name or assumed role (IAM ユーザー名または引き受けたロール)] を選択した場合は、[Value (値)] に、IAM ユーザーまたはロールの名前またはユーザーかロールの完全修飾 ARN を入力します。承認が必要な承認の数にカウントされるすべてのユーザーまたはロールを追加するまで、[Add (追加)] を再度選択してユーザーまたはロールを追加します。

    どちらの承認者タイプでも、値にワイルドカード (*) を使用できます。たとえば、[IAM user name or assumed role (IAM ユーザー名または引き受けたロール)] オプションを選択し、CodeCommitReview/* を指定した場合、CodeCommitReview のロールを引き受けるすべてのユーザーが承認プールにカウントされます。個々のロールセッション名は、必要な承認者数にカウントされます。このようにして、Mary_Major と Li_Juan は、サインインして CodeCommitReview のロールを引き受けるときに承認としてカウントされます。IAM ARN、ワイルドカード、および形式の詳細については、「IAM 識別子」を参照してください。

    注記

    承認ルールは、クロスアカウント承認をサポートしていません。

  8. 承認ルールの設定が完了したら、[Submit (送信)] を選択します。

プルリクエストの承認ルールを作成する (AWS CLI)

AWS CLI コマンドを CodeCommit で使用するには、AWS CLI をインストールします。詳細については、「コマンドラインリファレンス」を参照してください。

CodeCommit リポジトリ で、プルリクエストの承認ルールを作成するには

  1. 次のように指定して create-pull-request-approval-rule コマンドを実行します。

    • プルリクエストの ID (--id オプションを指定)。

    • 承認ルールの名前(--approval-rule-name オプション付き)。

    • 承認ルールの内容(--approval-rule-content オプション付き)。

    承認ルールを作成するときに、次のいずれかの方法で承認プールの承認者を指定できます。

    • CodeCommitApprovers: このオプションでは、AWS アカウントとリソースのみが必要です。指定されたリソース名と一致する名前を持つ IAM ユーザーとフェデレーティッドアクセスユーザーの両方に使用できます。これは非常に強力なオプションで、柔軟性が大きく高まります。たとえば、AWS アカウント 123456789012 と Mary_Major を指定した場合、次のすべてがそのユーザーからの承認としてカウントされます。

      • アカウントの IAM ユーザー (arn:aws:iam::123456789012:user/Mary_Major)

      • Mary_Major として IAM で識別されるフェデレーティッドユーザー (arn:aws:sts::123456789012:federated-user/Mary_Major)

      このオプションは、ワイルドカード (*Mary_Major) を指定しない限り、ロールセッション名が Mary_Major (arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major) の CodeCommitReview のロールを引き受けるユーザーのアクティブなセッションを認識しません。

    • [Fully qualified ARN (完全修飾 ARN)]: このオプションでは、IAM ユーザーまたはロールの完全修飾 Amazon リソースネーム (ARN) を指定できます。

    IAM ARN、ワイルドカード、および形式の詳細については、「IAM 識別子」を参照してください。

    次の例では、ID が 27 のプルリクエストの Require two approved approvers という名前の承認ルールを作成します。ルールは、承認プールから 2 つの承認が必要であることを指定します。プールには、CodeCommit にアクセスし、123456789012 AWS アカウントで CodeCommitReview のロールを引き受けるすべてのユーザーが含まれます。また、同じ AWS アカウントに 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/*\"]}]}"
  2. このコマンドが正常に実行されると、次のような出力が生成されます。

    { "approvalRule": { "approvalRuleName": "Require two approved approvers", "lastModifiedDate": 1570752871.932, "ruleContentSha256": "7c44e6ebEXAMPLE", "creationDate": 1570752871.932, "approvalRuleId": "aac33506-EXAMPLE", "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"CodeCommitApprovers:123456789012:Nikhil_Jayashankar\", \"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major" } }