승인 규칙 템플릿 생성 - AWS CodeCommit

AWS CodeCommit 신규 고객은 더 이상 사용할 수 없습니다. 의 기존 고객은 정상적으로 서비스를 계속 이용할 AWS CodeCommit 수 있습니다. 자세히 알아보기”

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

승인 규칙 템플릿 생성

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

콘솔 또는 AWS CLI를 사용하여 승인 규칙 템플릿을 생성할 수 있습니다. 승인 규칙 템플릿에 대한 관리형 정책 및 권한에 대해 자세히 알아보려면 승인 규칙 템플릿에 대한 작업 권한 섹션과 AWS 관리형 정책은 다음과 같습니다. CodeCommit 섹션을 참조하세요.

승인 규칙 템플릿 생성 (콘솔)

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

승인 규칙 템플릿을 생성하려면 (콘솔)

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

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

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

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

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

  6. (선택 사항) 특정 사용자 그룹에서 풀 요청에 대한 승인을 받도록 하려면 승인 규칙 멤버에서 추가를 선택합니다. 승인자 유형에서 다음 중 하나를 선택합니다.

    • IAM 사용자 이름 또는 수인된 역할: 이 옵션은 로그인하는 데 사용한 계정의 Amazon Web Services 계정 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)가 포함되지 않는 한 역할 세션 이름 Mary_Major(arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major)를 사용하여 CodeCommitReview 역할을 수임한 누군가의 활성 세션을 인식하지 못합니다. 역할 이름(CodeCommitReview/Mary_Major)을 명시적으로 지정할 수도 있습니다.

    • 정규화된 ARN: 이 옵션을 사용하면 IAM 사용자 또는 역할의 정규화된 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 이 옵션은 AWS Lambda 및 AWS CodeBuild와 같은 다른 AWS 서비스에서 사용하는 수임된 역할도 지원합니다. 수임된 역할의 경우 ARN 형식은 역할 및 기능에 대해 각각 arn:aws:sts::AccountID:assumed-role/RoleNamearn:aws:sts::AccountID:assumed-role/FunctionName 형식이어야 합니다.

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

    두 승인자 유형 모두 값에 와일드카드(*)를 사용할 수 있습니다. 예를 들어, IAM 사용자 이름 또는 수임된 역할 옵션을 선택하고 CodeCommitReview/*를 지정하면, CodeCommitReview의 역할을 맡은 모든 사용자가 승인 풀에 포함됩니다. 개별 역할 세션 이름은 필요한 승인자 수에 포함됩니다. 이러한 방식으로 Mary_Major 및 Li_Juan은 로그인하여 CodeCommitReview 역할을 수임하면 승인으로 합산됩니다. IAM ARN, 와일드카드, 형식 등에 대한 자세한 내용은 IAM 식별자를 참조하세요.

    참고

    승인 규칙은 교차 계정 승인을 지원하지 않습니다.

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

  8. (선택 사항) 연결된 리포지토리리포지토리 목록에서 이 승인 규칙과 연결할 이 AWS 리전의 리포지토리를 선택합니다.

    참고

    템플릿을 생성한 후 리포지토리를 연결하도록 선택할 수 있습니다. 자세한 내용은 승인 규칙 템플릿을 리포지토리와 연결 섹션을 참조하세요.

  9. 생성을 선택합니다.

풀 요청이 main이라는 브랜치에서 생성되어 2개의 리포지토리와 연결된 경우 정의된 승인 규칙의 승인자 1명이 필요한 승인 규칙 템플릿

승인 규칙 템플릿 생성 (AWS CLI)

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

승인 규칙 템플릿을 만들려면 (AWS CLI)

  1. 터미널 또는 명령줄에서 다음을 지정하여 create-approval-rule-template 명령을 실행합니다.

    • 승인 규칙 템플릿을 위한 이름. 용도를 설명하는 이름을 사용하는 것이 좋습니다.

    • 승인 규칙 템플릿에 대한 설명. 이름과 마찬가지로 자세한 설명을 제공하는 것이 좋습니다.

    • 승인 규칙 템플릿의 JSON 구조. 이 구조에는 승인 규칙이 적용되는 풀 요청의 대상 브랜치인 대상 참조에 대한 요구 사항과 필요한 승인 수에 해당 승인이 합산되는 사용자인 승인 풀 멤버가 포함될 수 있습니다.

    승인 규칙의 내용을 작성할 때 다음 두 가지 방법 중 하나로 승인 풀에 승인자를 지정할 수 있습니다.

    • CodeCommitApprovers: 이 옵션에는 Amazon Web Services 계정과 리소스만 필요합니다. 이 옵션은 이름이 제공된 리소스 이름과 일치하는 IAM 사용자 및 페더레이션 액세스 사용자 모두에 사용할 수 있습니다. 이 옵션은 폭넓은 유연성을 제공하는 매우 강력한 옵션입니다. 예를 들어 AWS 계정 123456789012와 Mary_Major를 지정한 경우 다음은 모두 해당 사용자의 승인으로 간주됩니다.

      • 해당 계정의 IAM 사용자 (arn:aws:iam::123456789012:user/Mary_Major)

      • IAM에서 Mary_Major로 식별되는 페더레이션 사용자 (arn:aws:sts::123456789012:federated-user/Mary_Major)

      이 옵션은 와일드카드(*Mary_Major)가 포함되지 않는 한 역할 세션 이름 Mary_Major(arn:aws:sts::123456789012:assumed-role/SeniorDevelopers/Mary_Major)를 사용하여 SeniorDevelopers의 역할을 수임한 누군가의 활성 세션을 인식하지 못합니다.

    • 정규화된 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에 대한 설명을 생성합니다. 템플릿을 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/*\"]}]}"
  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" } }