

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á.

# Crie uma EventBridge regra para uma CodeCommit fonte (CLI)
<a name="pipelines-trigger-source-repo-changes-cli"></a>

Use o comando **put-rule**, especificando:
+ Um nome que identifique de forma exclusiva a regra que você está criando. Esse nome deve ser exclusivo em todos os pipelines que você cria CodePipeline associados à sua AWS conta.
+ O padrão de evento para a origem e os campos detalhados usados pela regra. Para obter mais informações, consulte [Amazon EventBridge e Event Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html).<a name="proc-cli-event-codecommit"></a>

**Para criar uma EventBridge regra com CodeCommit como origem do evento e CodePipeline como destino**

1. Adicione permissões para usar EventBridge CodePipeline para invocar a regra. Para obter mais informações, consulte [Uso de políticas baseadas em recursos para a Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html). EventBridge

   1. Use o exemplo a seguir para criar a política de confiança que permite assumir EventBridge a função de serviço. Nomeie a política de confiança `trustpolicyforEB.json`.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "events.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. Use o comando a seguir para criar a função `Role-for-MyRule` e anexar a política de confiança.

      ```
      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
      ```

   1. Crie o JSON de política de permissões, conforme mostrado neste exemplo, para o pipeline denominado `MyFirstPipeline`. Nomeie a politica de permissões `permissionspolicyforEB.json`.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "codepipeline:StartPipelineExecution"
                  ],
                  "Resource": [
                      "arn:aws:codepipeline:us-west-2:111122223333:MyFirstPipeline"
                  ]
              }
          ]
      }
      ```

------

   1. Use o comando a seguir para anexar a política de permissões `CodePipeline-Permissions-Policy-for-EB` à função `Role-for-MyRule`.

      **Por que estou fazendo essa alteração?** Adicionar essa política à função cria permissões para EventBridge.

      ```
      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
      ```

1. Use o comando **put-rule** e inclua os parâmetros `--name`, `--event-pattern` e `--role-arn`.

   **Por que estou fazendo essa alteração?** Esse comando permite que o CloudFormation crie o evento.

   O comando de exemplo a seguir cria uma regra chamada `MyCodeCommitRepoRule`.

   ```
   aws events put-rule --name "MyCodeCommitRepoRule" --event-pattern "{\"source\":[\"aws.codecommit\"],\"detail-type\":[\"CodeCommit Repository State Change\"],\"resources\":[\"repository-ARN\"],\"detail\":{\"referenceType\":[\"branch\"],\"referenceName\":[\"main\"]}}" --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
   ```

1. Para adicionar CodePipeline como destino, chame o **put-targets** comando e inclua os seguintes parâmetros:
   + O parâmetro `--rule` é usado com `rule_name` criado por meio de **put-rule**. 
   + O parâmetro `--targets` é usado com o `Id` da lista do destino na lista de destinos e o `ARN` do pipeline de destino.

   O exemplo de comando a seguir especifica que, para a regra chamada `MyCodeCommitRepoRule`, o `Id` do destino é composto do número um, indicando que, em uma lista de destinos para a regra, esse é o destino 1. O exemplo de comando também especifica um exemplo `ARN` para o pipeline. O pipeline é iniciado quando uma alteração é feita no repositório.

   ```
   aws events put-targets --rule MyCodeCommitRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
   ```

1. (Opcional) Para configurar um transformador de entrada com substituições de origem para um ID de imagem específico, use o JSON a seguir no comando da CLI. O exemplo a seguir configura uma substituição na qual:
   + O `actionName`, `Source` neste exemplo, é o valor dinâmico, definido na criação do pipeline, não derivado do evento de origem.
   + O `revisionType`, `COMMIT_ID` neste exemplo, é o valor dinâmico, definido na criação do pipeline, não derivado do evento de origem.
   + O`revisionValue`, < *revisionValue* > neste exemplo, é derivado da variável de evento de origem.

   ```
   {
       "Rule": "my-rule",
       "Targets": [
           {
               "Id": "MyTargetId",
               "Arn": "pipeline-ARN",
               "InputTransformer": {
                   "sourceRevisions": {
                       "actionName": "Source",
                       "revisionType": "COMMIT_ID",
                       "revisionValue": "<revisionValue>"
                   },
                   "variables": [
                       {
                           "name": "Branch_Name",
                           "value": "value"
                       }
                   ]
               }
           }
       ]
   }
   ```<a name="proc-cli-flag-codecommit"></a>

**Para editar o PollForSourceChanges parâmetro do seu funil**
**Importante**  
Ao criar um pipeline com esse método, o parâmetro `PollForSourceChanges` é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter detalhes, consulte [Configurações válidas para o parâmetro `PollForSourceChanges`](PollForSourceChanges-defaults.md).

1. Execute o **get-pipeline** comando para copiar a estrutura do pipeline em um arquivo JSON. Por exemplo, para um pipeline nomeado `MyFirstPipeline`, execute o seguinte comando: 

   ```
   aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
   ```

   Este comando retorna nada, mas o arquivo que você criou deve aparecer no diretório onde você executou o comando.

1. Abra o arquivo JSON em qualquer editor de texto plano e altere o `PollForSourceChanges` parâmetro `false` para editar o estágio de origem, como mostrado no exemplo a seguir.

   **Por que estou fazendo essa alteração?** A alteração deste parâmetro para `false` desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos.

   ```
   "configuration": {
       "PollForSourceChanges": "false",
       "BranchName": "main",
       "RepositoryName": "MyTestRepo"
   },
   ```

1. Se você estiver trabalhando com a estrutura do pipeline recuperada por meio do comando **get-pipeline**, remova as linhas `metadata` do arquivo JSON. Caso contrário, o comando **update-pipeline** não é capaz de utilizá-la. Remova as linhas `"metadata": { }`, `"created"`, `"pipelineARN"` e os campos `"updated"`.

   Por exemplo, remova as seguintes linhas da estrutura: 

   ```
   "metadata": {
       "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name",
       "created": "date",
       "updated": "date"
   },
   ```

   Salve o arquivo.

1. Para aplicar suas alterações, execute o comando **update-pipeline** especificando o arquivo JSON do pipeline:
**Importante**  
Não se esqueça de incluir `file://` antes do nome de arquivo. Ele é obrigatório nesse comando.

   ```
   aws codepipeline update-pipeline --cli-input-json file://pipeline.json
   ```

   Este comando retorna toda a estrutura do pipeline editado.
**nota**  
O comando **update-pipeline** interrompe o pipeline. Se uma revisão estiver sendo executada pelo pipeline quando você executar o comando **update-pipeline**, essa execução será interrompida. Você deve iniciar manualmente o pipeline para executar a revisão através do pipeline atualizado. Use o comando **`start-pipeline-execution`** para iniciar manualmente o pipeline.