

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# CodeCommit actions à la source et EventBridge
<a name="triggering"></a>

Pour ajouter une action CodeCommit source CodePipeline, vous pouvez choisir de : 
+ Utilisez l'assistant de **création de pipeline** ([Création d'un pipeline personnalisé (console)](pipelines-create.md#pipelines-create-console)) ou la page **d'action Modifier** de la CodePipeline console pour choisir l'option du **CodeCommit**fournisseur. La console crée une EventBridge règle qui démarre votre pipeline lorsque la source change.
+ Utilisez le AWS CLI pour ajouter la configuration de l'`CodeCommit`action et créer des ressources supplémentaires comme suit :
  + Utilisez l'`CodeCommit`exemple de configuration d'action [CodeCommit référence d'action source](action-reference-CodeCommit.md) pour créer votre action comme indiqué dans[Création d'un pipeline (interface de ligne de commande)](pipelines-create.md#pipelines-create-cli).
  + La méthode de détection des modifications consiste par défaut à démarrer le pipeline en interrogeant la source. Vous devez désactiver les contrôles périodiques et créer la règle de détection des modifications manuellement. Utilisez l'une des méthodes suivantes : [Création d'une EventBridge règle pour une CodeCommit source (console)](pipelines-trigger-source-repo-changes-console.md)[Création d'une EventBridge règle pour une CodeCommit source (CLI)](pipelines-trigger-source-repo-changes-cli.md), ou[Création d'une EventBridge règle pour une CodeCommit source (CloudFormation modèle)](pipelines-trigger-source-repo-changes-cfn.md).

**Topics**
+ [Création d'une EventBridge règle pour une CodeCommit source (console)](pipelines-trigger-source-repo-changes-console.md)
+ [Création d'une EventBridge règle pour une CodeCommit source (CLI)](pipelines-trigger-source-repo-changes-cli.md)
+ [Création d'une EventBridge règle pour une CodeCommit source (CloudFormation modèle)](pipelines-trigger-source-repo-changes-cfn.md)

# Création d'une EventBridge règle pour une CodeCommit source (console)
<a name="pipelines-trigger-source-repo-changes-console"></a>

**Important**  
Si vous utilisez la console pour créer ou modifier votre pipeline, votre EventBridge règle est créée pour vous.

**Pour créer une EventBridge règle à utiliser dans les CodePipeline opérations**

1. Ouvrez la EventBridge console Amazon à l'adresse [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Dans le panneau de navigation, choisissez **Rules**. Laissez le bus par défaut sélectionné ou choisissez un bus d'événements. Choisissez **Créer une règle**.

1. Dans **Nom**, saisissez le nom de votre règle.

1. Sous **Type de règle**, choisissez **Règle avec un modèle d'événement**. Choisissez **Suivant**.

1. Sous **Source de l'événement**, sélectionnez **AWS des événements ou des événements EventBridge partenaires**.

1. Sous **Exemple de type d'événement**, sélectionnez **AWS événements**.

1. Dans **Exemples d'événements**, saisissez CodeCommit le mot clé sur lequel filtrer. Choisissez **CodeCommit Repository State Change**.

1. Sous **Méthode de création**, choisissez **Customer pattern (éditeur JSON)**.

   Collez le modèle d'événement fourni ci-dessous. L'exemple suivant est un exemple de modèle d'événement CodeCommit dans la fenêtre **Événement** pour un référentiel `MyTestRepo` avec une branche nommée `main`.

   ```
   {
     "source": [
       "aws.codecommit"
     ],
     "detail-type": [
       "CodeCommit Repository State Change"
     ],
     "resources": [
       "arn:aws:codecommit:us-west-2:80398EXAMPLE:MyTestRepo"
     ],
     "detail": {
       "referenceType": [
         "branch"
       ],
       "referenceName": [
         "main"
       ]
     }
   }
   ```

1. Dans **Cibles**, sélectionnez **CodePipeline**.

1. Entrez l'ARN du pipeline à démarrer selon cette règle.
**Note**  
Vous trouverez l'ARN de pipeline dans la sortie des métadonnées après avoir exécuté la commande **get-pipeline**. L'ARN de pipeline est élaboré dans ce format :   
arn:aws:codepipeline : : : *region* *account* *pipeline-name*  
Exemple d'ARN de pipeline :  
`arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline`

1. Pour créer ou spécifier un rôle de service IAM autorisant EventBridge l'appel de la cible associée à votre EventBridge règle (dans ce cas, la cible est CodePipeline) : 
   + Choisissez **Créer un nouveau rôle pour cette ressource spécifique** afin de créer un rôle de service qui vous EventBridge autorise à démarrer les exécutions de votre pipeline.
   + Choisissez **Utiliser un rôle existant** pour saisir un rôle de service qui vous EventBridge autorise à démarrer les exécutions de votre pipeline.

1. (Facultatif) Pour spécifier les remplacements de source avec un ID d'image spécifique, utilisez le transformateur d'entrée pour transmettre les données sous forme de paramètres JSON. Vous pouvez également utiliser le transformateur d'entrée pour transmettre des variables de pipeline.
   + Développer **Additional settings (Paramètres supplémentaires)**.

     Sous **Configurer l'entrée cible**, choisissez **Configurer le transformateur d'entrée**.

     Dans la fenêtre de dialogue, choisissez **Enter my own**. Dans le champ **Chemin d'entrée**, tapez les paires clé-valeur suivantes.

     ```
     {"revisionValue": "$.detail.image-digest"}
     ```
   + Dans le champ **Modèle**, tapez les paires clé-valeur suivantes.

     ```
     {
         "sourceRevisions": [
             {
                 "actionName": "Source",
                 "revisionType": "COMMIT_ID",
                 "revisionValue": "<revisionValue>"
             }
         ],
         "variables": [
             {
                 "name": "Branch_Name",
                 "value": "value"
             }
         ]
     }
     ```
   + Choisissez **Confirmer**.

1. Choisissez **Suivant**.

1. Sur la page **Tags**, choisissez **Next**.

1. Sur la page **Réviser et créer**, passez en revue la configuration des règles. Si la règle vous convient, choisissez **Créer une règle**.

# Création d'une EventBridge règle pour une CodeCommit source (CLI)
<a name="pipelines-trigger-source-repo-changes-cli"></a>

Appelez la commande **put-rule**, en spécifiant les éléments suivants :
+ Un nom qui identifie de façon unique la règle que vous créez. Ce nom doit être unique pour tous les pipelines que vous créez CodePipeline associés à votre AWS compte.
+ Le modèle d'événement pour la source et les champs de détails utilisés par la règle. Pour plus d'informations, consultez [Amazon EventBridge et Event Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html).<a name="proc-cli-event-codecommit"></a>

**Pour créer une EventBridge règle avec CodeCommit comme source d'événement et CodePipeline comme cible**

1. Ajoutez des autorisations EventBridge à utiliser CodePipeline pour invoquer la règle. Pour plus d'informations, consultez [Utiliser des politiques basées sur les ressources pour Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html). EventBridge

   1. Utilisez l'exemple suivant pour créer la politique de confiance qui permet EventBridge d'assumer le rôle de service. Nommez la stratégie d'approbation `trustpolicyforEB.json`.

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

****  

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

------

   1. Utilisez la commande suivante pour créer le rôle `Role-for-MyRule` et attachez la stratégie d'approbation.

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

   1. Créez le JSON de stratégie d'autorisations comme indiqué dans cet exemple pour le pipeline nommé `MyFirstPipeline`. Nommez la stratégie d'autorisations `permissionspolicyforEB.json`.

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

****  

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

------

   1. Utilisez la commande suivante pour attacher au rôle `Role-for-MyRule` la stratégie d'autorisations `CodePipeline-Permissions-Policy-for-EB`.

      **Pourquoi est-ce que j'effectue cette modification ?** L'ajout de cette politique au rôle crée des autorisations pour EventBridge.

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

1. Appelez la commande **put-rule** et incluez les paramètres `--name`, `--event-pattern` et `--role-arn`.

   **Pourquoi est-ce que j'effectue cette modification ?** Cette commande permet à CloudFormation de créer l'événement.

   L'exemple de commande suivant crée une règle nommée `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. Pour l'ajouter CodePipeline en tant que cible, appelez la **put-targets** commande et incluez les paramètres suivants :
   + Le paramètre `--rule` s'utilise avec le la règle `rule_name` que vous avez créée à l'aide de la commande **put-rule**. 
   + Le paramètre `--targets` s'utilise avec l'ID de liste `Id` de la cible figurant dans la liste des cibles et l'`ARN` du pipeline cible.

   L'exemple de commande suivant spécifie que pour la règle appelée `MyCodeCommitRepoRule`, l'`Id` cible est composé du numéro un, ce qui indique qu'il s'agit de la règle 1 dans une liste de cibles pour la règle. L'exemple de commande spécifie également un exemple d'`ARN` pour le pipeline. Le pipeline démarre lorsque des modifications sont effectuées dans le référentiel.

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

1. (Facultatif) Pour configurer un transformateur d'entrée avec des remplacements de source pour un ID d'image spécifique, utilisez le code JSON suivant dans votre commande CLI. L'exemple suivant configure une dérogation dans laquelle :
   + `Source`Dans cet exemple`actionName`, il s'agit de la valeur dynamique, définie lors de la création du pipeline, qui n'est pas dérivée de l'événement source.
   + `COMMIT_ID`Dans cet exemple`revisionType`, il s'agit de la valeur dynamique, définie lors de la création du pipeline, qui n'est pas dérivée de l'événement source.
   + Dans cet exemple`revisionValue`, le, < *revisionValue* > est dérivé de la variable d'événement source.

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

**Pour modifier le PollForSourceChanges paramètre de votre pipeline**
**Important**  
Lorsque vous créez un pipeline avec cette méthode, le paramètre `PollForSourceChanges` prend la valeur Vrai par défaut s'il n'est pas explicitement défini sur Faux. Lorsque vous ajoutez la détection des modifications basée sur les événements, vous devez ajouter le paramètre à votre sortie et le configurer sur Faux pour désactiver l'interrogation. Sinon, votre pipeline démarre deux fois pour une seule modification de source. Pour en savoir plus, consultez [Réglages valides pour le `PollForSourceChanges` paramètre](PollForSourceChanges-defaults.md).

1. Exécutez la commande **get-pipeline** pour copier la structure de pipeline dans un fichier JSON. Par exemple, pour un pipeline nommé `MyFirstPipeline`, exécutez la commande suivante : 

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

   Cette commande ne renvoie rien, mais le fichier que vous avez créé doit apparaître dans le répertoire où vous avez exécuté la commande.

1. Ouvrez le fichier JSON dans un éditeur de texte brut et modifiez l'étape source en remplaçant la valeur du paramètre `PollForSourceChanges` par `false`, comme illustré dans cet exemple.

   **Pourquoi est-ce que j'effectue cette modification ?** Le remplacement de la valeur de ce paramètre par `false` désactive les vérifications périodiques, ce qui vous permet d'utiliser la détection des modifications basée sur les événements uniquement.

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

1. Si vous utilisez la structure de pipeline extraite à l'aide de la commande **get-pipeline**, supprimez les lignes `metadata` du fichier JSON. Sinon, la commande **update-pipeline** ne peut pas l'utiliser. Supprimez les lignes `"metadata": { }` et les champs `"updated"`, `"created"` et `"pipelineARN"`.

   Par exemple, supprimez les lignes suivantes de la structure : 

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

   Enregistrez le fichier.

1. Pour appliquer les modifications, exécutez la commande **update-pipeline** en spécifiant le fichier JSON du pipeline :
**Important**  
N'oubliez pas d'inclure `file://` devant le nom du fichier. Il est nécessaire dans cette commande.

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

   Cette commande affiche toute la structure du pipeline mise à jour.
**Note**  
La commande **update-pipeline** interrompt le pipeline. Si une révision est exécutée dans le pipeline lorsque vous exécutez la commande **update-pipeline** celle-ci est interrompue. Vous devez lancer manuellement le pipeline pour exécuter cette révision dans le pipeline mis à jour. Utilisez la commande **`start-pipeline-execution`** pour démarrer manuellement votre pipeline.

# Création d'une EventBridge règle pour une CodeCommit source (CloudFormation modèle)
<a name="pipelines-trigger-source-repo-changes-cfn"></a>



 CloudFormation Pour créer une règle, mettez à jour votre modèle comme indiqué ici.<a name="proc-cfn-event-codecommit"></a>

**Pour mettre à jour votre CloudFormation modèle de pipeline et créer une EventBridge règle**

1. Dans le modèle, ci-dessous`Resources`, utilisez la `AWS::IAM::Role` CloudFormation ressource pour configurer le rôle IAM qui permet à votre événement de démarrer votre pipeline. Cette entrée crée un rôle qui utilise deux stratégies :
   + La première stratégie autorise le rôle à être endossé.
   + La deuxième stratégie fournit des autorisations pour démarrer le pipeline.

   **Pourquoi est-ce que j'effectue cette modification ?** L'ajout de la `AWS::IAM::Role` ressource permet CloudFormation de créer des autorisations pour EventBridge. Cette ressource est ajoutée à votre CloudFormation pile.

------
#### [ YAML ]

   ```
     EventRole:
       Type: AWS::IAM::Role
       Properties:
         AssumeRolePolicyDocument:
           Version: 2012-10-17		 	 	 
           Statement:
             -
               Effect: Allow
               Principal:
                 Service:
                   - events.amazonaws.com
               Action: sts:AssumeRole
         Path: /
         Policies:
           -
             PolicyName: eb-pipeline-execution
             PolicyDocument:
               Version: 2012-10-17		 	 	 
               Statement:
                 -
                   Effect: Allow
                   Action: codepipeline:StartPipelineExecution
                   Resource: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ]
   ```

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

   ```
   "EventRole": {
     "Type": "AWS::IAM::Role", 
     "Properties": {
       "AssumeRolePolicyDocument": {
         "Version": "2012-10-17",		 	 	 
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": [
                 "events.amazonaws.com"
               ]
             },
             "Action": "sts:AssumeRole"
           }
         ]
       },
       "Path": "/",
       "Policies": [
         {
           "PolicyName": "eb-pipeline-execution",
           "PolicyDocument": {
             "Version": "2012-10-17",		 	 	 
             "Statement": [
               {
                 "Effect": "Allow",
                 "Action": "codepipeline:StartPipelineExecution",
                 "Resource": {
                   "Fn::Join": [
                     "",
                     [
                       "arn:aws:codepipeline:",
                       {
                         "Ref": "AWS::Region"
                       },
                       ":",
                       {
                         "Ref": "AWS::AccountId"
                       },
                       ":",
                       {
                         "Ref": "AppPipeline"
                       }
                     ]
   
   ...
   ```

------

1. Dans le modèle, sous`Resources`, utilisez la `AWS::Events::Rule` CloudFormation ressource pour ajouter une EventBridge règle. Ce modèle d'événement crée un événement qui surveille les modifications push apportées à votre référentiel. Lorsqu'un changement d'état du référentiel est EventBridge détecté, la règle est invoquée `StartPipelineExecution` sur votre pipeline cible.

   **Pourquoi est-ce que je fais ce changement ?** L'ajout de la `AWS::Events::Rule` ressource CloudFormation permet de créer l'événement. Cette ressource est ajoutée à votre CloudFormation pile.

------
#### [ YAML ]

   ```
     EventRule:
       Type: AWS::Events::Rule
       Properties:
         EventPattern:
           source:
             - aws.codecommit
           detail-type:
             - 'CodeCommit Repository State Change'
           resources:
             - !Join [ '', [ 'arn:aws:codecommit:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref RepositoryName ] ]
           detail:
             event:
               - referenceCreated
               - referenceUpdated
             referenceType:
               - branch
             referenceName:
               - main
         Targets:
           -
             Arn: 
               !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ]
             RoleArn: !GetAtt EventRole.Arn
             Id: codepipeline-AppPipeline
   ```

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

   ```
   "EventRule": {
     "Type": "AWS::Events::Rule",
     "Properties": {
       "EventPattern": {
         "source": [
           "aws.codecommit"
         ],
         "detail-type": [
           "CodeCommit Repository State Change"
         ],
         "resources": [
           {
             "Fn::Join": [
               "",
               [
                 "arn:aws:codecommit:",
                 {
                   "Ref": "AWS::Region"
                 },
                 ":",
                 {
                   "Ref": "AWS::AccountId"
                 },
                 ":",
                 {
                   "Ref": "RepositoryName"
                 }
               ]
             ]
           }
         ],
         "detail": {
           "event": [
             "referenceCreated",
             "referenceUpdated"
           ],
           "referenceType": [
             "branch"
           ],
           "referenceName": [
             "main"
           ]
         }
       },
       "Targets": [
         {
           "Arn": {
             "Fn::Join": [
               "",
               [
                 "arn:aws:codepipeline:",
                 {
                   "Ref": "AWS::Region"
                 },
                 ":",
                 {
                   "Ref": "AWS::AccountId"
                 },
                 ":",
                 {
                   "Ref": "AppPipeline"
                 }
               ]
             ]
           },
           "RoleArn": {
             "Fn::GetAtt": [
               "EventRole",
               "Arn"
             ]
           },
           "Id": "codepipeline-AppPipeline"
         }
       ]
     }
   },
   ```

------

1. (Facultatif) Pour configurer un transformateur d'entrée avec des remplacements de source pour un ID d'image spécifique, utilisez l'extrait de code YAML suivant. L'exemple suivant configure une dérogation dans laquelle :
   + `Source`Dans cet exemple`actionName`, il s'agit de la valeur dynamique, définie lors de la création du pipeline, qui n'est pas dérivée de l'événement source.
   + `COMMIT_ID`Dans cet exemple`revisionType`, il s'agit de la valeur dynamique, définie lors de la création du pipeline, qui n'est pas dérivée de l'événement source.
   + Dans cet exemple`revisionValue`, le, < *revisionValue* > est dérivé de la variable d'événement source.
   + Les variables de sortie pour `BranchName` et `Value` sont spécifiées.

   ```
   Rule: my-rule
   Targets:
   - Id: MyTargetId
     Arn: pipeline-ARN
     InputTransformer:
       sourceRevisions:
         actionName: Source
         revisionType: COMMIT_ID
         revisionValue: <revisionValue>
       variables:
       - name: BranchName
         value: value
   ```

1. Enregistrez le modèle mis à jour sur votre ordinateur local, puis ouvrez la CloudFormation console.

1. Choisissez votre pile, puis **Créer un jeu de modifications pour la pile actuelle**. 

1. Chargez le modèle mis à jour, puis affichez les modifications répertoriées dans CloudFormation. Il s'agit des modifications apportées à la pile. Vos nouvelles ressources doivent figurer dans la liste. 

1. Sélectionnez **Execute (Exécuter)**.<a name="proc-cfn-flag-codecommit"></a>

**Pour modifier le PollForSourceChanges paramètre de votre pipeline**
**Important**  
Dans de nombreux cas, le paramètre `PollForSourceChanges` prend la valeur Vrai par défaut lorsque vous créez un pipeline. Lorsque vous ajoutez la détection des modifications basée sur les événements, vous devez ajouter le paramètre à votre sortie et le configurer sur Faux pour désactiver l'interrogation. Sinon, votre pipeline démarre deux fois pour une seule modification de source. Pour en savoir plus, consultez [Réglages valides pour le `PollForSourceChanges` paramètre](PollForSourceChanges-defaults.md).
+ Dans le modèle, remplacez la valeur du paramètre `PollForSourceChanges` par `false`. Si vous n'avez pas inclus `PollForSourceChanges` dans votre définition de pipeline, ajoutez ce paramètre et définissez-le sur `false`.

  **Pourquoi est-ce que j'effectue cette modification ?** Le remplacement de la valeur de ce paramètre par `false` désactive les vérifications périodiques, ce qui vous permet d'utiliser la détection des modifications basée sur les événements uniquement.

------
#### [ YAML ]

  ```
            Name: Source
            Actions: 
              - 
                Name: SourceAction
                ActionTypeId: 
                  Category: Source
                  Owner: AWS
                  Version: 1
                  Provider: CodeCommit
                OutputArtifacts: 
                  - Name: SourceOutput
                Configuration: 
                  BranchName: !Ref BranchName
                  RepositoryName: !Ref RepositoryName
                  PollForSourceChanges: false
                RunOrder: 1
  ```

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

  ```
  {
    "Name": "Source", 
    "Actions": [
      {
        "Name": "SourceAction",
        "ActionTypeId": {
          "Category": "Source",
          "Owner": "AWS",
          "Version": 1,
          "Provider": "CodeCommit"
        },
        "OutputArtifacts": [
          {
            "Name": "SourceOutput"
          }
        ],
        "Configuration": {
          "BranchName": {
            "Ref": "BranchName"
          },
          "RepositoryName": {
            "Ref": "RepositoryName"
          },
          "PollForSourceChanges": false
        },
        "RunOrder": 1
      }
    ]
  },
  ```

------