承認ルールテンプレートを作成する - AWS CodeCommit

AWS CodeCommit は、新規顧客には利用できなくなりました。 AWS CodeCommit の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

承認ルールテンプレートを作成する

1 つ以上の承認ルールテンプレートを作成して、リポジトリ間で開発ワークフローをカスタマイズできます。複数のテンプレートを作成することで、異なるブランチが適切なレベルの承認とコントロールを持つように、承認ルールの自動作成を設定できます。たとえば、本番稼働用ブランチと開発ブランチ用に異なるテンプレートを作成し、これらのテンプレートを 1 つ以上のリポジトリに適用できます。ユーザーがこれらのリポジトリでプルリクエストを作成すると、そのリクエストはそれらのテンプレートに対して評価されます。リクエストが適用されたテンプレートの条件と一致する場合、プルリクエストの承認ルールが作成されます。

コンソールまたは AWS CLI を使用して、承認ルールテンプレートを作成できます。承認ルールテンプレートのマネージドポリシーと許可の詳細については、「承認ルールテンプレートに対するアクションのアクセス許可 および AWS の マネージドポリシー CodeCommit」を参照してください。

承認ルールテンプレートを作成する (コンソール)

承認ルールテンプレートは、デフォルトではどのリポジトリにも関連付けられません。テンプレートを作成するときに、テンプレートと 1 つ以上のリポジトリ間の関連付けを作成することも、後で関連付けを追加することもできます。

承認ルールテンプレートを作成するには(コンソール)

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

  2. [Approval rule templates (承認ルールテンプレート)] を選択し、[Create template (テンプレートの作成)] を選択します。

  3. [Approval rule template name (承認ルールのテンプレート名)] で、テンプレートにわかりやすい名前を付けます。例えば、プルリクエストをマージする前に、上級デベロッパーのうちの 1 人に対して、プルリクエストを承認するように求める場合は、ルール Require 1 approver from a senior developer に名前を付けることができます。

  4. (オプション) [Description (説明)] に、このテンプレートの目的の説明を入力します。これは、このテンプレートがリポジトリに適しているかどうかを判断するのに役立ちます。

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

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

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

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

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

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

    • [Fully qualified ARN] (完全修飾 ARN): このオプションでは、IAM ユーザーまたはロールの完全修飾 Amazon リソースネーム (ARN) を指定できます。このオプションは、AWS や AWS Lambda などの 他の AWS CodeBuild サービスによって使用される委任ロールもサポートします。委任ロールの 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 識別子を参照してください。

    注記

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

  7. (オプション) [Branch filters (ブランチフィルター)] で、承認ルールの作成をフィルタリングするために使用する送信先ブランチ名を入力します。例えば、main を指定した場合、プルリクエストの送信先ブランチが main という名前のブランチである場合にのみ、関連付けられたリポジトリのプルリクエストに対して承認ルールが作成されます。ブランチ名にワイルドカード (*) を使用すると、ワイルドカードケースに一致するすべてのブランチ名に承認ルールを適用できます。ただし、ブランチ名の先頭にワイルドカードを使用することはできません。最大 100 のブランチ名を指定できます。フィルターを指定しない場合、テンプレートは関連付けられたリポジトリのすべてのブランチに適用されます。

  8. (オプション) [Associated repositories (関連付けられたリポジトリ)] の [Repositories (リポジトリ)] リストで、この承認ルールに関連付けるこの AWS リージョン のリポジトリを選択します。

    注記

    テンプレートを作成した後で、リポジトリを関連付けることができます。詳細については、「承認ルールテンプレートをリポジトリに関連付ける」を参照してください。

  9. [Create] を選択します。

main という名前のブランチでプルリクエストが作成され、2 つのリポジトリに関連付けられている場合に、定義された承認ルールから 1 人の承認者を必要とする承認ルールテンプレート。

承認ルールテンプレートを作成する (AWS CLI)

AWS CLI を使用して、承認ルールテンプレートを作成できます。AWS CLI を使用する場合、テンプレートの送信先リファレンスを指定できます。これにより、送信先ブランチがテンプレートの送信先ブランチと一致するプルリクエストにのみ適用されます。

承認ルールテンプレートを作成するには (AWS CLI)

  1. ターミナルまたはコマンドラインで、次を指定して、create-approval-rule-template コマンドを実行します。

    • 承認ルールテンプレートの名前。目的を説明する名前を使用することを検討してください。

    • 承認ルールテンプレートの説明。名前と同様に、詳細な説明を提供することを検討してください。

    • 承認ルールテンプレートの JSON 構造。この構造には、承認ルールが適用されるプルリクエストの送信先ブランチである送信先リファレンスの要件と、必要な承認の数に承認がカウントされるユーザーである承認プールメンバーの要件を含めることができます。

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

    • CodeCommitApprovers: このオプションでは、アマゾン ウェブ サービスアカウントとリソースのみが必要です。指定されたリソース名と一致する名前を持つ 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 (arn:aws:sts::123456789012:assumed-role/SeniorDevelopers/Mary_Major) である SeniorDevelopers のロールを引き受けるユーザーのアクティブなセッションは、ワイルドカード (*Mary_Major) を含めない限り認識されません。

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

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

    次の例では、2-approver-rule-for-main という名前の承認ルールテンプレートと Requires two developers from the team to approve the pull request if the destination branch is main の説明を作成します。このテンプレートでは、CodeCommitReview のロールを引き受ける 2 人のユーザーがプルリクエストを main ブランチにマージする前に承認する必要があります。

    aws codecommit create-approval-rule-template --approval-rule-template-name 2-approver-rule-for-main --approval-rule-template-description "Requires two developers from the team to approve the pull request if the destination branch is main" --approval-rule-template-content "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}"
  2. 成功すると、このコマンドは以下のような出力を返します。

    { "approvalRuleTemplate": { "approvalRuleTemplateName": "2-approver-rule-for-main", "creationDate": 1571356106.936, "approvalRuleTemplateId": "dd8b17fe-EXAMPLE", "approvalRuleTemplateContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "approvalRuleTemplateDescription": "Requires two developers from the team to approve the pull request if the destination branch is main", "lastModifiedDate": 1571356106.936, "ruleContentSha256": "4711b576EXAMPLE" } }