

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criar um modelo de regra de aprovação
<a name="how-to-create-template"></a>

É possível criar um ou mais modelos de regras de aprovação para ajudá-lo a personalizar seus fluxos de trabalho de desenvolvimento em vários repositórios. Ao criar vários modelos, é possível configurar a criação automática de regras de aprovação para que diferentes ramificações tenham níveis apropriados de aprovações e controle. Por exemplo, é possível criar modelos diferentes para ramificações de produção e desenvolvimento e aplicar esses modelos a um ou mais repositórios. Quando os usuários criam solicitações pull nesses repositórios, a solicitação é avaliada em relação a esses modelos. Se a solicitação corresponder às condições nos modelos aplicados, serão criadas regras de aprovação da solicitação pull.

Você pode usar o console ou AWS CLI criar modelos de regras de aprovação. Para obter mais informações sobre políticas e permissões gerenciadas para modelos de regras de aprovação, consulte [Permissões para ações em modelos de regras de aprovação](auth-and-access-control-permissions-reference.md#aa-art) e [AWS políticas gerenciadas para CodeCommit](security-iam-awsmanpol.md).

**Topics**
+ [Criar um modelo de regra de aprovação (console)](#how-to-create-template-console)
+ [Criar um modelo de regra de aprovação (AWS CLI)](#how-to-create-template-cli)

## Criar um modelo de regra de aprovação (console)
<a name="how-to-create-template-console"></a>

Os modelos de regras de aprovação não são associados a nenhum repositório por padrão. É possível fazer uma associação entre um modelo e um ou mais repositórios ao criar o modelo ou adicionar as associações mais tarde.<a name="create-template-console"></a>

## Como criar um modelo de regra de aprovação (console)
<a name="create-template-console"></a>

1. Abra o CodeCommit console em [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Escolha **Approval rule templates (Modelos de regras de aprovação)** e escolha **Create template (Criar modelo)**.

1. Em **Approval rule template name (Nome do modelo de regra de aprovação)**, dê ao modelo um nome descritivo para que você saiba para que serve. Por exemplo, se você deseja exigir que uma pessoa de um conjunto de desenvolvedores seniores aprove uma solicitação pull para que possa ser mesclada, é possível nomear a regra **Require 1 approver from a senior developer**. 

1. (Opcional) Em **Description (Descrição)**, forneça uma descrição da finalidade deste modelo. Isso pode ajudar outras pessoas a decidir se esse modelo é apropriado para os repositórios.

1. Em **Number of approvals needed (Número de aprovações necessárias)**, insira o número desejado. O padrão é um. 

1. (Opcional) Se deseja exigir que as aprovações de uma solicitação pull sejam provenientes de um grupo específico de usuários, em **Approval rule members (Membros da regra de aprovação)**, escolha **Add (Adicionar)**. Em **Approver type (Tipo de aprovador)**, escolha uma das seguintes opções: 
   + **Nome de usuário do IAM ou perfil assumido**: essa opção preenche previamente o ID da conta da Amazon Web Services para a conta que você usou para fazer login e requer apenas um nome. Ela pode ser usada para usuários de acesso federados e usuários do IAM cujos nomes correspondam ao nome fornecido. Essa é uma opção muito eficiente que oferece uma grande flexibilidade. Por exemplo, se você escolher essa opção, estiver conectado com a conta 123456789012 da Amazon Web Services e especificar **Mary\$1Major**, todos as opções a seguir contarão como aprovações provenientes desse usuário:
     + Um usuário do IAM na conta (`arn:aws:iam::123456789012:user/Mary_Major`)
     + Um usuário federado identificado no IAM como Mary\$1Major (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

     Essa opção não reconhece uma sessão ativa de alguém que assume a função de **CodeCommitReview** com um nome de sessão de função de Mary\$1Major (`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`), a menos que você inclua um curinga (`*Mary_Major`). Você também pode especificar o nome da função explicitamente (`CodeCommitReview/Mary_Major`).
   + **ARN totalmente qualificado**: essa opção permite especificar o nome do recurso da Amazon (ARN) totalmente qualificado do perfil ou usuário do IAM. Essa opção também oferece suporte a funções assumidas usadas por outros AWS serviços, como AWS Lambda AWS CodeBuild e. Para funções assumidas, o formato do ARN deve ser `arn:aws:sts::AccountID:assumed-role/RoleName` para funções (roles) e `arn:aws:sts::AccountID:assumed-role/FunctionName` funções (functions).

   Se você escolheu o **nome de usuário do IAM ou perfil assumido** como o tipo de aprovador, em **Valor**, insira o nome do usuário ou perfil do IAM ou o ARN totalmente qualificado do usuário ou perfil. Escolha **Add (Adicionar)** novamente para adicionar mais usuários ou funções, até que você tenha adicionado todos os usuários ou funções cujas aprovações contam para o número de aprovações necessárias. 

   Ambos os tipos de aprovadores permitem usar curingas (\$1) em seus valores. Por exemplo, se você escolher a opção **nome de usuário do IAM ou perfil assumido** e especificar **CodeCommitReview/\$1**, todos os usuários que assumirem o perfil de **CodeCommitReview** serão contados no grupo de aprovação. Os nomes de sessão de função individual são contabilizados no número necessário de aprovadores. Dessa forma, tanto Mary\$1Major quanto Li\$1Juan contam como aprovações quando conectados e assumindo a função de `CodeCommitReview`. Para obter mais informações sobre IAM ARNs, curingas e formatos, consulte [Identificadores do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns).
**nota**  
As regras de aprovação não oferecem suporte a aprovações entre contas.

1. (Opcional) Em **Branch filters (Filtros de ramificação)**, insira nomes de ramificação de destino a serem usados para filtrar a criação de regras de aprovação. Por exemplo, se você especificar*main*, uma regra de aprovação será criada para pull requests em repositórios associados somente se a ramificação de destino da pull request for uma ramificação chamada*main*. É possível usar curingas (\$1) em nomes de ramificação para aplicar regras de aprovação a todos os nomes de ramificação que correspondam aos caracteres curinga. No entanto, não é possível usar um curinga no início de um nome de ramificação. É possível especificar até 100 nomes de ramificação. Se você não especificar nenhum filtro, o modelo se aplicará a todas as ramificações em um repositório associado.

1. (Opcional) Em **Repositórios associados**, na lista **Repositórios**, escolha os repositórios nessa Região da AWS que deseja associar a essa regra de aprovação. 
**nota**  
É possível optar por associar repositórios após a criação do modelo. Para obter mais informações, consulte [Associar um modelo de regra de aprovação a um repositório](how-to-associate-template.md).

1. Escolha **Criar**.

![\[Um modelo de regra de aprovação que exige 1 aprovador em uma regra de aprovação definida se uma solicitação pull for criada na ramificação master, associada a dois repositórios\]](http://docs.aws.amazon.com/pt_br/codecommit/latest/userguide/images/codecommit-approval-rule-template.png)


## Criar um modelo de regra de aprovação (AWS CLI)
<a name="how-to-create-template-cli"></a>

Você pode usar o AWS CLI para criar modelos de regras de aprovação. Ao usar o AWS CLI, você pode especificar referências de destino para o modelo, de forma que ele se aplique somente às pull requests cujas ramificações de destino correspondam às do modelo.<a name="create-template-cli"></a>

## Como criar um modelo de regra de aprovação (AWS CLI)
<a name="create-template-cli"></a>

1. Em um terminal ou uma linha de comando, execute o comando **create-approval-rule-template**, especificando:
   + O nome do modelo de regra de aprovação. Considere usar um nome que descreva sua finalidade.
   + Uma descrição do modelo de regra de aprovação. Assim como acontece com o nome, considere fornecer uma descrição detalhada.
   + A estrutura JSON do modelo de regra de aprovação. Essa estrutura pode incluir requisitos para referências de destino, que são ramificações de destino para solicitações pull às quais a regra de aprovação é aplicada e membros do grupo de aprovações, que são usuários cujas aprovações contam para o número de aprovações necessárias.

   Ao criar o conteúdo da regra de aprovação, é possível especificar aprovadores em um grupo de aprovações de duas maneiras:
   + **CodeCommitApprovers**: Essa opção requer somente uma conta e um recurso da Amazon Web Services. Ela pode ser usada para usuários de acesso federados e usuários do IAM cujo nome corresponde ao nome do recurso fornecido. Essa é uma opção muito eficiente que oferece uma grande flexibilidade. Por exemplo, se você especificar a conta 123456789012 da AWS e **Mary\$1Major**, todos as opções a seguir contam como aprovações provenientes desse usuário:
     + Um usuário do IAM na conta (`arn:aws:iam::123456789012:user/Mary_Major`)
     + Um usuário federado identificado no IAM como Mary\$1Major (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

     Essa opção não reconhece uma sessão ativa de alguém assumindo a função de *SeniorDevelopers* com um nome de sessão de função *Mary\$1Major* (`arn:aws:sts::123456789012:assumed-role/SeniorDevelopers/Mary_Major`), a menos que você inclua um caractere curinga (`*Mary_Major`).
   + **ARN totalmente qualificado**: essa opção permite especificar o nome do recurso da Amazon (ARN) totalmente qualificado do perfil ou usuário do IAM. 

   Para obter mais informações sobre IAM ARNs, curingas e formatos, consulte [Identificadores do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns).

   O exemplo a seguir cria um modelo de regra de aprovação chamado **2-approver-rule-for-main** e uma descrição **Requires two developers from the team to approve the pull request if the destination branch is main**. O modelo exige que dois usuários que assumem a função de **CodeCommitReview** aprovem qualquer solicitação pull para que ela possa ser mesclada à ramificação **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/*\"]}]}"
   ```

1. Se houver êxito, o comando gerará uma saída semelhante à seguinte:

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