

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 승인 규칙 템플릿 생성
<a name="how-to-create-template"></a>

하나 이상의 승인 규칙 템플릿을 생성하여 리포지토리 사이에서 개발 워크플로를 사용자 지정할 수 있습니다. 여러 템플릿을 생성하면 여러 브랜치가 적절한 수준의 승인 및 제어 권한을 보유하도록 승인 규칙의 자동 생성을 구성할 수 있습니다. 예를 들어 프로덕션 브랜치와 개발 브랜치에 서로 다른 템플릿을 생성하여 이러한 템플릿을 하나 이상의 리포지토리에 적용할 수 있습니다. 사용자가 해당 리포지토리에서 풀 요청을 생성하면 해당 템플릿에 대해 요청이 평가됩니다. 요청이 적용된 템플릿의 조건과 일치하면 풀 요청에 대한 승인 규칙이 생성됩니다.

콘솔 또는 AWS CLI 를 사용하여 승인 규칙 템플릿을 생성할 수 있습니다. 승인 규칙 템플릿에 대한 관리형 정책 및 권한에 대해 자세히 알아보려면 [승인 규칙 템플릿에 대한 작업 권한](auth-and-access-control-permissions-reference.md#aa-art) 섹션과 [AWS CodeCommit에 대한 관리형 정책](security-iam-awsmanpol.md) 섹션을 참조하세요.

**Topics**
+ [승인 규칙 템플릿 생성 (콘솔)](#how-to-create-template-console)
+ [승인 규칙 템플릿 생성 (AWS CLI)](#how-to-create-template-cli)

## 승인 규칙 템플릿 생성 (콘솔)
<a name="how-to-create-template-console"></a>

승인 규칙 템플릿은 기본적으로 리포지토리와 연결되어 있지 않습니다. 템플릿을 생성할 때 템플릿과 하나 이상의 리포지토리 간에 연결을 생성하거나 나중에 연결을 추가할 수 있습니다.<a name="create-template-console"></a>

## 승인 규칙 템플릿을 생성하려면 (콘솔)
<a name="create-template-console"></a>

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home)에서 CodeCommit 콘솔을 엽니다.

1. **승인 규칙 템플릿**을 선택한 다음 **템플릿 생성**을 선택합니다.

1. **승인 규칙 템플릿 이름**에서 템플릿에 해당 용도를 알 수 있도록 설명이 포함된 이름을 지정합니다. 예를 들어, 풀 요청을 병합하기 전에 선임 개발자 그룹 중 한 명이 승인하도록 요청하려면 규칙 이름을 **Require 1 approver from a senior developer**로 지정할 수 있습니다.

1. (선택 사항) **설명**에 이 템플릿의 용도에 대한 설명을 제공합니다. 이렇게 하면 다른 사용자가 이 템플릿이 해당 리포지토리에 적합한지 여부를 결정하는 데 도움이 됩니다.

1. **필요한 승인 수**에 원하는 숫자를 입력합니다. 기본값은 1입니다.

1. (선택 사항) 특정 사용자 그룹에서 풀 요청에 대한 승인을 받도록 하려면 **승인 규칙 멤버**에서 **추가**를 선택합니다. **승인자 유형**에서 다음 중 하나를 선택합니다.
   + **IAM 사용자 이름 또는 수인된 역할**: 이 옵션은 로그인하는 데 사용한 계정의 Amazon Web Services 계정 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`)가 포함되지 않는 한 역할 세션 이름 Mary\$1Major(`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`)를 사용하여 **CodeCommitReview** 역할을 수임한 누군가의 활성 세션을 인식하지 못합니다. 역할 이름(`CodeCommitReview/Mary_Major`)을 명시적으로 지정할 수도 있습니다.
   + **정규화된 ARN**: 이 옵션을 사용하면 IAM 사용자 또는 역할의 정규화된 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 이 옵션은 AWS Lambda 및와 같은 다른 AWS 서비스에서 사용하는 수임된 역할도 지원합니다 AWS CodeBuild. 수임된 역할의 경우 ARN 형식은 역할 및 기능에 대해 각각 `arn:aws:sts::AccountID:assumed-role/RoleName` 및 `arn:aws:sts::AccountID:assumed-role/FunctionName` 형식이어야 합니다.

   승인자 유형으로 **IAM 사용자 이름 또는 수임된 역할**을 선택한 경우, **값**에는 IAM 사용자나 역할의 이름 또는 사용자나 역할의 정규화된 ARN을 입력합니다. 필요한 승인 수에 해당 승인이 합산되는 모든 사용자 또는 역할을 추가할 때까지 **추가**를 다시 선택하여 사용자 또는 역할을 추가합니다.

   두 승인자 유형 모두 값에 와일드카드(\$1)를 사용할 수 있습니다. 예를 들어, **IAM 사용자 이름 또는 수임된 역할** 옵션을 선택하고 **CodeCommitReview/\$1**를 지정하면, **CodeCommitReview**의 역할을 맡은 모든 사용자가 승인 풀에 포함됩니다. 개별 역할 세션 이름은 필요한 승인자 수에 포함됩니다. 이러한 방식으로 Mary\$1Major 및 Li\$1Juan은 로그인하여 `CodeCommitReview` 역할을 수임하면 승인으로 합산됩니다. IAM ARN, 와일드카드, 형식 등에 대한 자세한 내용은 [IAM 식별자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)를 참조하세요.
**참고**  
승인 규칙은 교차 계정 승인을 지원하지 않습니다.

1. (선택 사항) **브랜치 필터**에 승인 규칙 생성을 필터링하는 데 사용할 대상 브랜치 이름을 입력합니다. 예를 들어, *main*을 지정할 경우, 풀 요청의 대상 브랜치가 *main*이라는 브랜치인 경우에만 연결된 리포지토리의 풀 요청에 대한 승인 규칙이 생성됩니다. 브랜치 이름에 와일드카드(\$1)를 사용하여 와일드카드 대소문자와 일치하는 모든 브랜치 이름에 승인 규칙을 적용할 수 있습니다. 그러나 브랜치 이름의 시작 부분에는 와일드카드를 사용할 수 없습니다. 브랜치 이름을 최대 100개까지 지정할 수 있습니다. 필터를 지정하지 않으면 템플릿이 연결된 리포지토리의 모든 브랜치에 적용됩니다.

1. (선택 사항) **연결된 리포지토리**의 **리포지토리** 목록에서 이 승인 규칙과 연결할 이 AWS 리전 의 리포지토리를 선택합니다.
**참고**  
템플릿을 생성한 후 리포지토리를 연결하도록 선택할 수 있습니다. 자세한 내용은 [승인 규칙 템플릿을 리포지토리와 연결](how-to-associate-template.md) 단원을 참조하십시오.

1. **생성**을 선택합니다.

![\[풀 요청이 main이라는 브랜치에서 생성되어 2개의 리포지토리와 연결된 경우 정의된 승인 규칙의 승인자 1명이 필요한 승인 규칙 템플릿\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-approval-rule-template.png)


## 승인 규칙 템플릿 생성 (AWS CLI)
<a name="how-to-create-template-cli"></a>

 AWS CLI 를 사용하여 승인 규칙 템플릿을 생성할 수 있습니다. 를 사용할 때 대상 브랜치가 템플릿의 브랜치와 일치하는 풀 요청에만 적용되도록 템플릿의 대상 참조를 지정할 AWS CLI수 있습니다.<a name="create-template-cli"></a>

## 승인 규칙 템플릿을 만들려면 (AWS CLI)
<a name="create-template-cli"></a>

1. 터미널 또는 명령줄에서 다음을 지정하여 **create-approval-rule-template** 명령을 실행합니다.
   + 승인 규칙 템플릿을 위한 이름. 용도를 설명하는 이름을 사용하는 것이 좋습니다.
   + 승인 규칙 템플릿에 대한 설명. 이름과 마찬가지로 자세한 설명을 제공하는 것이 좋습니다.
   + 승인 규칙 템플릿의 JSON 구조. 이 구조에는 승인 규칙이 적용되는 풀 요청의 대상 브랜치인 대상 참조에 대한 요구 사항과 필요한 승인 수에 해당 승인이 합산되는 사용자인 승인 풀 멤버가 포함될 수 있습니다.

   승인 규칙의 내용을 작성할 때 다음 두 가지 방법 중 하나로 승인 풀에 승인자를 지정할 수 있습니다.
   + **CodeCommitApprovers**: 이 옵션에는 Amazon Web Services 계정과 리소스만 필요합니다. 이 옵션은 이름이 제공된 리소스 이름과 일치하는 IAM 사용자 및 페더레이션 액세스 사용자 모두에 사용할 수 있습니다. 이 옵션은 폭넓은 유연성을 제공하는 매우 강력한 옵션입니다. 예를 들어 AWS 계정 123456789012와 **Mary\$1Major**를 지정한 경우 다음은 모두 해당 사용자의 승인으로 간주됩니다.
     + 해당 계정의 IAM 사용자 (`arn:aws:iam::123456789012:user/Mary_Major`)
     + IAM에서 Mary\$1Major로 식별되는 페더레이션 사용자 (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

     이 옵션은 와일드카드(`*Mary_Major`)가 포함되지 않는 한 역할 세션 이름 *Mary\$1Major*(`arn:aws:sts::123456789012:assumed-role/SeniorDevelopers/Mary_Major`)를 사용하여 *SeniorDevelopers*의 역할을 수임한 누군가의 활성 세션을 인식하지 못합니다.
   + **정규화된 ARN**: 이 옵션을 사용하면 IAM 사용자 또는 역할의 정규화된 Amazon 리소스 이름(ARN)을 지정할 수 있습니다.

   IAM ARN, 와일드카드, 형식 등에 대한 자세한 내용은 [IAM 식별자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)를 참조하세요.

   다음 예제에서는 **2-approver-rule-for-main**이라는 승인 규칙 템플릿과 **Requires two developers from the team to approve the pull request if the destination branch is main**에 대한 설명을 생성합니다. 템플릿을 **main** 브랜치에 병합하기 전에 **CodeCommitReview** 역할을 수임한 두 명의 사용자가 풀 요청을 승인해야 합니다.

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

1. 이 명령이 제대로 실행되면 다음과 비슷한 출력이 반환됩니다.

   ```
   {
       "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"
       }
   }
   ```