

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

# Crea un esempio di notifiche per CodeBuild
<a name="sample-build-notifications"></a>

Amazon CloudWatch Events dispone di un supporto integrato per AWS CodeBuild. CloudWatch Events è un flusso di eventi di sistema che descrive i cambiamenti nelle tue AWS risorse. Con CloudWatch Events, scrivi regole dichiarative per associare gli eventi di interesse alle azioni automatiche da intraprendere. Questo esempio utilizza Amazon CloudWatch Events e Amazon Simple Notification Service (Amazon SNS) per inviare notifiche di build agli abbonati ogni volta che le build hanno successo, hanno esito negativo, passano da una fase di compilazione all'altra o qualsiasi combinazione di questi eventi.

**Importante**  
L'esecuzione di questo esempio potrebbe comportare addebiti sul tuo account. AWS Questi includono eventuali addebiti per CodeBuild e per AWS risorse e azioni relative ad Amazon CloudWatch e Amazon SNS. Per ulteriori informazioni, consulta [CodeBuild i prezzi, i CloudWatch](https://aws.amazon.com/codebuild/pricing) [prezzi di Amazon](https://aws.amazon.com/cloudwatch/pricing) e i prezzi di [Amazon SNS](https://aws.amazon.com/sns/pricing).

**Topics**
+ [Esegui l'esempio di notifiche di compilazione](#sample-build-notifications-running)
+ [Informazioni di riferimento sul formato di input delle notifiche di compilazione](sample-build-notifications-ref.md)

## Esegui l'esempio di notifiche di compilazione
<a name="sample-build-notifications-running"></a>

Utilizza la procedura seguente per eseguire l'esempio di notifiche di compilazione.

**Per eseguire questo esempio**

1. Se hai già configurato e sottoscritto un argomento in Amazon SNS che desideri utilizzare per questo esempio, vai avanti al passaggio 4. Altrimenti, se utilizzi un utente IAM anziché un account AWS root o un utente amministratore per lavorare con Amazon SNS, aggiungi la seguente dichiarazione (tra {{\#\#\# BEGIN ADDING STATEMENT HERE \#\#\#}} e{{\#\#\# END ADDING STATEMENT HERE \#\#\#}}) all'utente (o al gruppo IAM a cui l'utente è associato). L'utilizzo di un account AWS root non è consigliato. Questa dichiarazione consente di visualizzare, creare, sottoscrivere e testare l'invio di notifiche agli argomenti in Amazon SNS. Le ellissi (`...`) vengono utilizzate per brevità e per aiutare i clienti a individuare il punto in cui aggiungere l'istruzione. Non rimuovere nessuna istruzione e non digitare queste ellissi nella policy esistente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:CreateTopic",
                   "sns:GetTopicAttributes",
                   "sns:List*",
                   "sns:Publish",
                   "sns:SetTopicAttributes",
                   "sns:Subscribe"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Nota**  
L'entità IAM che modifica questa politica deve disporre dell'autorizzazione in IAM per modificare le politiche.  
Per ulteriori informazioni, consulta [Modifica delle politiche gestite dai clienti](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) o la sezione «Modificare o eliminare una politica in linea per un gruppo, un utente o un ruolo» in [Working with inline policies (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) nella *IAM* User Guide.

1. Crea o identifica un argomento in Amazon SNS. AWS CodeBuild utilizza CloudWatch Events per inviare notifiche di build su questo argomento tramite Amazon SNS. 

   Per creare un argomento:

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

   1. Scegli **Create topic** (Crea argomento). 

   1. In **Create new topic (Crea nuovo argomento)** per **Topic name (Nome argomento)**, digitare un nome per l'argomento, ad esempio **CodeBuildDemoTopic**. (Se si sceglie un nome diverso, sostituirlo in tutto il campione). 

   1. Scegli **Create topic** (Crea argomento).

   1. Nella CodeBuildDemoTopic pagina **Dettagli argomento:**, copia il valore **Arn dell'argomento**. che servirà per la fase successiva. 

        
![Il valore Arn dell'argomento.](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/topic-arn.png)

      

   Per ulteriori informazioni, consulta [Creare un argomento](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) nella *Amazon SNS Developer* Guide.

1. Abbonare uno o più destinatari all'argomento per ricevere notifiche e-mail. 

   Per sottoscrivere un destinatario a un argomento:

   1. **Con la console Amazon SNS aperta dal passaggio precedente, nel riquadro di navigazione, scegli **Abbonamenti, quindi scegli Crea abbonamento**.**

   1. In **Create subscription (Crea abbonamento)**, per **Topic ARN (ARN argomento)**, copiare e incollare l'ARN dell'argomento dalla fase precedente.

   1. Per **Protocollo**, scegli **E-mail**.

   1. Per **Endpoint**, immettere l'indirizzo e-mail completo del destinatario. 

        
![La configurazione dell'abbonamento.](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/create-subscription.png)

      

   1. Selezionare **Crea sottoscrizione**.

   1. Amazon SNS invia un'e-mail di conferma dell'abbonamento al destinatario. Per iniziare a ricevere le notifiche e-mail, il destinatario deve selezionare il link **Confirm subscription (Conferma abbonamento)** nell'e-mail di conferma dell'abbonamento. Dopo che il destinatario ha fatto clic sul link, se l'iscrizione è avvenuta correttamente, Amazon SNS visualizza un messaggio di conferma nel browser Web del destinatario.

   Per ulteriori informazioni, consulta [Abbonarsi a un argomento](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) nella *Amazon SNS Developer Guide*.

1. Se utilizzi un utente anziché un account AWS root o un utente amministratore per lavorare con CloudWatch Events, aggiungi la seguente dichiarazione (tra {{\#\#\# BEGIN ADDING STATEMENT HERE \#\#\#}} e{{\#\#\# END ADDING STATEMENT HERE \#\#\#}}) all'utente (o al gruppo IAM a cui l'utente è associato). L'utilizzo di un account AWS root non è consigliato. Questa istruzione viene utilizzata per consentire all'utente di lavorare con CloudWatch Events. Le ellissi (`...`) vengono utilizzate per brevità e per aiutare i clienti a individuare il punto in cui aggiungere l'istruzione. Non rimuovere nessuna istruzione e non digitare queste ellissi nella policy esistente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "events:*",
                   "iam:PassRole"
               ],
               "Resource": "{{arn:aws:iam::*:role/Service*}}"
           }
       ]
   }
   ```

------
**Nota**  
L'entità IAM che modifica questa politica deve disporre dell'autorizzazione in IAM per modificare le politiche.  
Per ulteriori informazioni, consulta [Modifica delle politiche gestite dai clienti](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) o la sezione «Modificare o eliminare una politica in linea per un gruppo, un utente o un ruolo» in [Working with inline policies (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) nella *IAM* User Guide.

1. Crea una regola in CloudWatch Events. Per fare ciò, apri la CloudWatch console, all'indirizzo [https://console.aws.amazon.com/cloudwatch](https://console.aws.amazon.com/cloudwatch).

1. Nel riquadro di navigazione, in **Events (Eventi)**, selezionare **Rules (Regolamento)**, quindi **Create rule (Crea regolamento)**. 

1. Nella pagina **Step 1: Create rule (Fase 1: Creare regolamento)**, dovrebbero già essere selezionate le opzioni **Event Pattern (Modello evento)** e **Build event pattern to match events by service (Crea un modello evento da abbinare agli eventi in base al servizio)**. 

1. Per **Service Name (Nome del servizio)**, selezionare **CodeBuild**. Per **Event Type (Tipo di evento)**, **All Events (Tutti gli eventi)** dovrebbe già essere selezionato.

1. Il codice seguente deve essere visualizzato nell'**anteprima del modello di evento**:

   ```
   {
     "source": [ 
       "aws.codebuild"
     ]
   }
   ```

1. Scegliete **Modifica** e sostituite il codice in **Event Pattern Preview** con uno dei due modelli di regole seguenti.

   Il primo modello di regola attiva un evento quando una compilazione viene avviata o completata, per i progetti di compilazione specificati in AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build State Change"
     ],
     "detail": {
       "build-status": [
         "IN_PROGRESS",
         "SUCCEEDED", 
         "FAILED",
         "STOPPED" 
       ],
       "project-name": [
         "{{my-demo-project-1}}",
         "{{my-demo-project-2}}"
       ]
     }  
   }
   ```

   Nella regola precedente, eseguire le modifiche al codice seguente laddove necessario.
   + Per attivare un evento quando una compilazione viene avviata o completata, lasciare tutti i valori come illustrato nell'array `build-status` oppure rimuovere completamente l'array `build-status`. 
   + Per attivare un evento solo quando una compilazione viene completata, rimuovere `IN_PROGRESS` dall'array `build-status`. 
   + Per attivare un evento solo quando una compilazione viene avviata, rimuovere tutti i valori eccetto `IN_PROGRESS` dall'array `build-status`.
   + Per attivare gli eventi per tutti i progetti di compilazione, rimuovere completamente l'array `project-name`.
   + Per attivare gli eventi solo per singoli progetti di compilazione, specificare il nome di ciascun progetto di compilazione nell'array `project-name`. 

   Il secondo modello di regola attiva un evento ogni volta che una compilazione si sposta da una fase di compilazione a un'altra, per i progetti di compilazione specificati in AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build Phase Change" 
     ],
     "detail": {
       "completed-phase": [
         "SUBMITTED",
         "PROVISIONING",
         "DOWNLOAD_SOURCE",
         "INSTALL",
         "PRE_BUILD",
         "BUILD",
         "POST_BUILD",
         "UPLOAD_ARTIFACTS",
         "FINALIZING"
       ],
       "completed-phase-status": [
         "TIMED_OUT",
         "STOPPED",
         "FAILED", 
         "SUCCEEDED",
         "FAULT",
         "CLIENT_ERROR"
       ],
       "project-name": [
         "{{my-demo-project-1}}",
         "{{my-demo-project-2}}"
       ]
     }  
   }
   ```

   Nella regola precedente, eseguire le modifiche al codice seguente laddove necessario.
   + Per attivare un evento per ogni modifica della fase di compilazione (che può inviare fino a nove notifiche per ogni compilazione), lasciare tutti i valori come illustrato nell'array `completed-phase` oppure rimuovere completamente l'array `completed-phase`.
   + Per attivare gli eventi solo per le singole modifiche della fase di compilazione, rimuovere il nome di ciascun progetto di compilazione nell'array `completed-phase` per cui non si desidera attivare un evento.
   + Per attivare un evento per ogni modifica dello stato della fase di compilazione, lasciare tutti i valori come illustrato nell'array `completed-phase-status` oppure rimuovere completamente l'array `completed-phase-status`.
   + Per attivare gli eventi solo per le singole modifiche dello stato della fase di compilazione, rimuovere il nome di ciascuno stato della fase di compilazione nell'array `completed-phase-status` per cui non si desidera attivare un evento.
   + Per attivare gli eventi per tutti i progetti di compilazione, rimuovi l'array `project-name`.
   + Per attivare gli eventi per i singoli progetti di compilazione, specificare il nome di ciascun progetto di compilazione nell'array `project-name`. 

   Per ulteriori informazioni sui pattern di eventi, consulta [Event Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html) nella Amazon EventBridge User Guide.

   Per ulteriori informazioni sul filtraggio con pattern di eventi, consulta [Content-basedFiltering with Event Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html) nella Amazon EventBridge User Guide.
**Nota**  
Se si desidera attivare gli eventi sia per le modifiche dello stato della compilazione che per le modifiche della fase di compilazione, è necessario creare due regole separate, una per le modifiche dello stato della compilazione e l'altra per le modifiche della fase di compilazione. Se si tenta di combinare entrambe le regole in una singola regola, la regola combinata potrebbe produrre risultati imprevisti o smettere di funzionare del tutto.

   Al termine della sostituzione del codice, selezionare **Save (Salva)**.

1. In **Targets** (Destinazioni), seleziona **Add target** (Aggiungi destinazione). 

1. Nell'elenco degli obiettivi, selezionare **SNS topic (Argomento SNS)**; 

1. Per **Argomento**, selezionare l'argomento identificato o creato in precedenza. 

1. Espandere **Configure input (Configura input)**, quindi selezionare **Input Transformer (Trasformatore di input)**. 

1. Nella casella **Input Path (Percorso dell'input)**, immettere uno dei seguenti percorsi di input.

   Per una regola con il valore `CodeBuild Build State Change` per `detail-type`, immettere quanto segue.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","build-status":"$.detail.build-status"}
   ```

   Per una regola con il valore `CodeBuild Build Phase Change` per `detail-type`, immettere quanto segue.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","completed-phase":"$.detail.completed-phase","completed-phase-status":"$.detail.completed-phase-status"}
   ```

   Per ottenere altri tipi di informazioni, consultare [Informazioni di riferimento sul formato di input delle notifiche di compilazione](sample-build-notifications-ref.md).

1. Nella casella **Input Template (Modello dell'input)**, immettere uno dei seguenti modelli di input.

   Per una regola con il valore `CodeBuild Build State Change` per `detail-type`, immettere quanto segue.

   ```
   "Build '<build-id>' for build project '<project-name>' has reached the build status of '<build-status>'."
   ```

   Per una regola con il valore `CodeBuild Build Phase Change` per `detail-type`, immettere quanto segue.

   ```
   "Build '<build-id>' for build project '<project-name>' has completed the build phase of '<completed-phase>' with a status of '<completed-phase-status>'."
   ```

1. Scegli **Configura dettagli**.

1. Nella pagina **Step 2: Configure rule details (Fase 2: Configurare i dettagli della regola)**, immettere un nome e una descrizione facoltativa. Per **State (Stato)**, lasciare l'opzione **Enabled (Abilitato)** selezionata.

1. Scegli **Crea regola**. 

1. Crea progetti di compilazione, esegui le build e visualizza le informazioni sulle build.

1. Conferma che CodeBuild ora le notifiche di build sono state inviate correttamente. Ad esempio, verificare se le e-mail di notifica di compilazione si trovano nella casella di posta.

Per modificare il comportamento di una regola, nella CloudWatch console, scegli la regola che desideri modificare, scegli **Azioni** e quindi scegli **Modifica**. Apportare le modifiche alla regola, scegliere **Configure details (Configura dettagli)** e quindi selezionare **Update rule (Aggiorna regola)**.

Per smettere di usare una regola per inviare notifiche di build, nella CloudWatch console, scegli la regola che vuoi smettere di usare, scegli **Azioni** e quindi scegli **Disabilita**.

**Per eliminare completamente una regola, nella CloudWatch console, scegli la regola che desideri eliminare, scegli **Azioni**, quindi scegli Elimina.**