

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Azioni e risorse relative ai sorgenti di Amazon ECR EventBridge
<a name="create-cwe-ecr-source"></a>

Per aggiungere un'azione sorgente Amazon ECR CodePipeline, puoi scegliere tra: 
+ Utilizza la CodePipeline console **Create pipeline** wizard ([Crea una pipeline personalizzata (console)](pipelines-create.md#pipelines-create-console)) o la pagina **Edit action** per scegliere l'opzione del provider **Amazon ECR.** La console crea una EventBridge regola che avvia la pipeline quando cambia la fonte.
+ Utilizza la CLI per aggiungere la configurazione dell'`ECR`azione e creare risorse aggiuntive come segue:
  + Usa la configurazione dell'azione di `ECR` esempio in [Riferimento all'azione sorgente di Amazon ECR](action-reference-ECR.md) per creare la tua azione come mostrato in[Creazione di una pipeline (CLI)](pipelines-create.md#pipelines-create-cli).
  + Per impostazione predefinita, il metodo di rilevamento delle modifiche avvia la pipeline interrogando la fonte. È necessario disabilitare i controlli periodici e creare manualmente la regola di rilevamento delle modifiche. Utilizzare uno dei seguenti metodi: [Crea una EventBridge regola per una fonte Amazon ECR (console)](create-cwe-ecr-source-console.md)[Crea una EventBridge regola per un codice sorgente Amazon ECR (CLI)](create-cwe-ecr-source-cli.md), o[Crea una EventBridge regola per una fonte Amazon ECR (CloudFormation modello)](create-cwe-ecr-source-cfn.md).

**Topics**
+ [Crea una EventBridge regola per una fonte Amazon ECR (console)](create-cwe-ecr-source-console.md)
+ [Crea una EventBridge regola per un codice sorgente Amazon ECR (CLI)](create-cwe-ecr-source-cli.md)
+ [Crea una EventBridge regola per una fonte Amazon ECR (CloudFormation modello)](create-cwe-ecr-source-cfn.md)

# Crea una EventBridge regola per una fonte Amazon ECR (console)
<a name="create-cwe-ecr-source-console"></a>

**Per creare una EventBridge regola da utilizzare nelle CodePipeline operazioni (fonte Amazon ECR)**

1. Apri la EventBridge console Amazon all'indirizzo [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Nel pannello di navigazione seleziona **Events** (Eventi).

1. Scegli **Crea regola**, quindi in **Origine evento**, da **Nome servizio**, scegli **Elastic Container Registry (ECR).**

1. In **Event Source (Origine eventi)** scegli **Event Pattern (Modello di eventi)**.

   Scegli **Modifica**, quindi incolla il seguente modello di eventi di esempio nella finestra **Origine eventi** per un repository `eb-test` con una versione di immagine con tag di `cli-testing`:

   ```
   {
       "detail-type": [
           "ECR Image Action"
       ],
       "source": [
           "aws.ecr"
       ],
       "detail": {
           "action-type": [
               "PUSH"
           ],
           "image-tag": [
               "latest"
           ],
           "repository-name": [
               "eb-test"
           ],
           "result": [
               "SUCCESS"
           ]
       }
   }
   ```
**Nota**  
Per visualizzare il modello di eventi completo supportato per gli eventi Amazon ECR, consulta [Amazon ECR Events e/o EventBridge Amazon](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-eventbridge.html) [Elastic Container Registry](https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#ecr-event-types) Events.

1. Scegli **Save** (Salva).

   Nel riquadro **Event Pattern Preview (Anteprima modello eventi)**, visualizzare la regola.

1. In **Targets**, scegli. **CodePipeline**

1. Immettete l'ARN della pipeline per la pipeline da avviare in base a questa regola.
**Nota**  
Puoi trovare l'ARN della pipeline nell'output dei metadati dopo aver eseguito il comando **get-pipeline**. Il formato dell'ARN della pipeline è il seguente:   
arn:aws:codepipeline::: *region* *account* *pipeline-name*  
ARN della pipeline di esempio:  
`arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline`

1. Crea o specifica un ruolo del servizio IAM che conceda EventBridge le autorizzazioni per richiamare la destinazione associata alla tua EventBridge regola (in questo caso, la destinazione è). CodePipeline 
   + Scegli **Crea un nuovo ruolo per questa risorsa specifica per** creare un ruolo di servizio che ti dia EventBridge le autorizzazioni per avviare le esecuzioni della pipeline.
   + Scegli **Usa il ruolo esistente** per inserire un ruolo di servizio che ti dia EventBridge le autorizzazioni per avviare le esecuzioni della pipeline.

1. (Facoltativo) Per specificare le sostituzioni di origine con un ID di immagine specifico, utilizzate il trasformatore di input per passare i dati come parametri JSON. Puoi anche usare il trasformatore di input per passare le variabili della pipeline.
   + Espandere **Additional settings** (Impostazioni aggiuntive).

     In **Configura l'input di destinazione**, scegli **Configura trasformatore di ingresso**.

     Nella finestra di dialogo, scegli **Inserisci il mio.** Nella casella **Percorso di input**, digitate le seguenti coppie chiave-valore.

     ```
     {"revisionValue": "$.detail.image-digest"}
     ```
   + Nella casella **Modello**, digitate le seguenti coppie chiave-valore.

     ```
     {
         "sourceRevisions": [
             {
                 "actionName": "Source",
                 "revisionType": "IMAGE_DIGEST",
                 "revisionValue": "<revisionValue>"
             }
         ],
          "variables": [
             {
                 "name": "Variable_Name",
                 "value": "Variable_Value"
             }
         ]
     }
     ```
   + Scegli **Conferma**.

1. Rivedere la configurazione delle regole per accertarsi che soddisfi i requisiti.

1. Scegli **Configura dettagli**.

1. Nella pagina **Configure rule details (Configura dettagli della regola)**, immetti un nome e una descrizione per la regola e quindi scegli **State (Stato)** per abilitare la regola.

1. Se la regola ti soddisfa, scegli **Create rule** (Crea regola).

# Crea una EventBridge regola per un codice sorgente Amazon ECR (CLI)
<a name="create-cwe-ecr-source-cli"></a>

Chiama il comando **put-rule**, specificando:
+ Un nome che identifica in modo univoco la regola che stai creando. Questo nome deve essere univoco in tutte le pipeline che crei e CodePipeline associate al tuo account. AWS 
+ Il modello eventi per i campi di origine e di dettaglio utilizzati dalla regola. Per ulteriori informazioni, consulta [Amazon EventBridge e Event Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html).

**Per creare una EventBridge regola con Amazon ECR come origine dell'evento e CodePipeline come destinazione**

1. Aggiungi le autorizzazioni EventBridge da utilizzare per CodePipeline richiamare la regola. Per ulteriori informazioni, consulta [Utilizzo delle politiche basate sulle risorse per Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html). EventBridge

   1. Utilizza l'esempio seguente per creare la policy di attendibilità per consentire a EventBridge di assumere il ruolo del servizio. Denomina la policy di attendibilità `trustpolicyforEB.json`.

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

****  

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

------

   1. Utilizza il seguente comando per creare il ruolo `Role-for-MyRule` e collegare la policy di attendibilità.

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

   1. Crea il JSON della policy delle autorizzazioni, come mostrato in questo esempio, per la pipeline denominata `MyFirstPipeline`. Denomina la policy delle autorizzazioni `permissionspolicyforEB.json`.

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

****  

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

------

   1. Utilizza il comando seguente per collegare la policy delle autorizzazioni `CodePipeline-Permissions-Policy-for-EB` al ruolo `Role-for-MyRule`.

      **Perché occorre apportare questa modifica?** L'aggiunta di questa politica al ruolo crea autorizzazioni per. EventBridge

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

1. Richiama il comando **put-rule** e includi i parametri `--name`, `--event-pattern` e `--role-arn`.

   **Perché occorre apportare questa modifica?** È necessario creare un evento con una regola che specifichi come deve essere eseguito il push di un'immagine e un obiettivo che nomini la pipeline da avviare dall'evento.

   Il seguente comando di esempio crea una regola denominata `MyECRRepoRule`.

   ```
   aws events put-rule --name "MyECRRepoRule" --event-pattern "{\"detail-type\":[\"ECR Image Action\"],\"source\":[\"aws.ecr\"],\"detail\":{\"action-type\":[\"PUSH\"],\"image-tag\":[\"latest\"],\"repository-name\":[\"eb-test\"],\"result\":[\"SUCCESS\"]}}}" --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
   ```
**Nota**  
Per visualizzare il modello di eventi completo supportato per gli eventi Amazon ECR, consulta [Amazon ECR Events e/o EventBridge Amazon](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-eventbridge.html) [Elastic Container Registry](https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#ecr-event-types) Events.

1. Per aggiungerlo CodePipeline come destinazione, chiama il **put-targets** comando e includi i seguenti parametri:
   + Il parametro `--rule` viene utilizzato con il `rule_name` che hai creato utilizzando **put-rule**.
   + Il parametro `--targets` viene utilizzato con l'`Id` elenco della destinazione nell'elenco delle destinazioni e l'`ARN` della pipeline di destinazione.

   Il comando di esempio seguente specifica che per la regola denominata `MyECRRepoRule`, la destinazione `Id` è composta dal numero uno, per indicare che in un elenco di destinazioni per la regola questa è la destinazione 1. Il comando di esempio specifica anche un esempio `Arn` per la pipeline e l'esempio `RoleArn` per la regola. La pipeline si avvia quando si verifica una modifica nel repository.

   ```
   aws events put-targets --rule MyECRRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline,RoleArn=arn:aws:iam::80398EXAMPLE:role/Role-for-MyRule
   ```

1. (Facoltativo) Per configurare un trasformatore di ingresso con sostituzioni di origine per un ID immagine specifico, utilizzate il seguente codice JSON nel comando CLI. L'esempio seguente configura un override in cui:
   + `Source`In questo esempio`actionName`, è il valore dinamico, definito al momento della creazione della pipeline, non derivato dall'evento di origine.
   + `IMAGE_DIGEST`In questo esempio`revisionType`, è il valore dinamico, definito al momento della creazione della pipeline, non derivato dall'evento di origine.
   + Il`revisionValue`, < *revisionValue* > in questo esempio, è derivato dalla variabile dell'evento source.

   ```
   {
       "Rule": "my-rule",
       "Targets": [
           {
               "Id": "MyTargetId",
               "Arn": "ARN",
               "InputTransformer": {
                   "InputPathsMap": {
                       "revisionValue": "$.detail.image-digest"
                   },
                   "InputTemplate": {
                       "sourceRevisions": [
                           {
                               "actionName": "Source",
                               "revisionType": "IMAGE_DIGEST",
                               "revisionValue": "<revisionValue>"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```

# Crea una EventBridge regola per una fonte Amazon ECR (CloudFormation modello)
<a name="create-cwe-ecr-source-cfn"></a>



 CloudFormation Per creare una regola, usa lo snippet di modello come mostrato qui.

**Per aggiornare il CloudFormation modello di pipeline e creare una regola EventBridge**

1. Nel modello, sotto`Resources`, utilizza la `AWS::IAM::Role` CloudFormation risorsa per configurare il ruolo IAM che consente all'evento di avviare la pipeline. Questa voce crea un ruolo che utilizza due policy:
   + La prima policy consente di assumere quel ruolo.
   + La seconda policy fornisce le autorizzazioni per avviare la pipeline.

   **Perché occorre apportare questa modifica?** Devi creare un ruolo che possa essere assunto da EventBridge per avviare un'esecuzione nella nostra pipeline.

------
#### [ 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: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${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::Sub": "arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}"
                                   }
                               }
                           ]
                       }
                   }
               ]
           }
       }
   }
   ...
   ```

------

1. Nel modello, sotto`Resources`, utilizza la `AWS::Events::Rule` CloudFormation risorsa per aggiungere una EventBridge regola per il codice sorgente Amazon ECR. Questo modello di eventi crea un evento che monitora i commit nel tuo repository. Quando EventBridge rileva una modifica dello stato del repository, la regola viene `StartPipelineExecution` richiamata sulla pipeline di destinazione.

   **Perché sto apportando questa modifica?** È necessario creare un evento con una regola che specifichi come deve essere eseguito il push di un'immagine e un target che nomini la pipeline da avviare dall'evento.

   Questo frammento utilizza un'immagine denominata `eb-test` con un tag `latest`.

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

   ```
   EventRule:
     Type: 'AWS::Events::Rule'
     Properties:
       EventPattern:
         detail:
           action-type: [PUSH]
           image-tag: [latest]
           repository-name: [eb-test]
           result: [SUCCESS]
         detail-type: [ECR Image Action]
         source: [aws.ecr]
       Targets:
         - Arn: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}
           RoleArn: !GetAtt 
             - EventRole
             - Arn
           Id: codepipeline-AppPipeline
   ```

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

   ```
   {
       "EventRule": {
           "Type": "AWS::Events::Rule",
           "Properties": {
               "EventPattern": {
                   "detail": {
                       "action-type": [
                           "PUSH"
                       ],
                       "image-tag": [
                           "latest"
                       ],
                       "repository-name": [
                           "eb-test"
                       ],
                       "result": [
                           "SUCCESS"
                       ]
                   },
                   "detail-type": [
                       "ECR Image Action"
                   ],
                   "source": [
                       "aws.ecr"
                   ]
               },
               "Targets": [
                   {
                       "Arn": {
                           "Fn::Sub": "arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}"
                       },
                       "RoleArn": {
                           "Fn::GetAtt": [
                               "EventRole",
                               "Arn"
                           ]
                       },
                       "Id": "codepipeline-AppPipeline"
                   }
               ]
           }
       }
   },
   ```

------
**Nota**  
Per visualizzare il modello di eventi completo supportato per gli eventi Amazon ECR, consulta [Amazon ECR Events e/o EventBridge Amazon](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-eventbridge.html) [Elastic Container Registry](https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#ecr-event-types) Events.

1. (Facoltativo) Per configurare un trasformatore di ingresso con sostituzioni di codice sorgente per un ID di immagine specifico, usa il seguente frammento di codice YAML. L'esempio seguente configura un override in cui:
   + `Source`In questo esempio`actionName`, è il valore dinamico, definito al momento della creazione della pipeline, non derivato dall'evento di origine.
   + `IMAGE_DIGEST`In questo esempio`revisionType`, è il valore dinamico, definito al momento della creazione della pipeline, non derivato dall'evento di origine.
   + Il`revisionValue`, < *revisionValue* > in questo esempio, è derivato dalla variabile dell'evento source.

   ```
   ---
   Rule: my-rule
   Targets:
   - Id: MyTargetId
     Arn: ARN
     InputTransformer:
       InputPathsMap:
         revisionValue: "$.detail.image-digest"
       InputTemplate:
         sourceRevisions:
           actionName: Source
           revisionType: IMAGE_DIGEST
           revisionValue: '<revisionValue>'
   ```

1. Salva il modello aggiornato nel computer locale e quindi apri la console CloudFormation .

1. Seleziona lo stack e scegli **Create Change Set for Current Stack (Crea set di modifiche per lo stack corrente)**. 

1. Carica il modello e quindi visualizza le modifiche elencate in CloudFormation. Queste sono le modifiche da apportare allo stack. Le nuove risorse dovrebbero essere visibili nell'elenco. 

1. Scegli **Esegui**.