

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

# Esempi trasversali per CodeBuild
<a name="cross-service-samples"></a>

È possibile utilizzare questi esempi interservizi per sperimentare con: AWS CodeBuild

[Esempio di Amazon ECR](sample-ecr.md)  
Utilizza un'immagine Docker in un repository Amazon ECR per utilizzare Apache Maven per produrre un singolo file JAR. Le istruzioni di esempio ti mostreranno come creare e inviare un'immagine Docker ad Amazon ECR, creare un progetto Go, creare il progetto, eseguire il progetto e configurare le autorizzazioni per consentire la connessione CodeBuild ad Amazon ECR.

[Esempio di Amazon EFS](sample-efs.md)  
Mostra come configurare un file buildspec in modo che un CodeBuild progetto venga montato e costruito su un file system Amazon EFS. Le istruzioni di esempio ti mostreranno come creare un Amazon VPC, creare un file system in Amazon VPC, creare e creare un progetto che utilizza Amazon VPC e quindi rivedere il file di progetto e le variabili generati. 

[AWS CodePipeline campioni](sample-codepipeline.md)  
Mostra come utilizzare per AWS CodePipeline creare una build con build in batch, più fonti di input e più artefatti di output. In questa sezione sono inclusi file JSON di esempio che mostrano strutture di pipeline che creano build in batch con artefatti separati e artefatti combinati. Viene fornito un esempio JSON aggiuntivo che mostra la struttura della pipeline con più sorgenti di input e più artefatti di output.

[AWS Config campione](how-to-integrate-config.md)  
Mostra come eseguire la configurazione. AWS Config Elenca CodeBuild le risorse monitorate e descrive come cercare i CodeBuild progetti. AWS Config Le istruzioni di esempio mostreranno i prerequisiti per l'integrazione AWS Config, i passaggi per la configurazione AWS Config e i passaggi in cui cercare CodeBuild progetti e dati. AWS Config

[Esempio di notifiche di compilazione](sample-build-notifications.md)  
Utilizza Apache Maven per produrre un singolo file JAR. Invia una notifica di build agli abbonati di un argomento di Amazon SNS. Le istruzioni di esempio mostrano come configurare le autorizzazioni in modo da CodeBuild poter comunicare con Amazon SNS CloudWatch e come creare e CodeBuild identificare argomenti in Amazon SNS, come iscrivere i destinatari all'argomento e come impostare le regole in. CloudWatch

# Esempio di Amazon ECR per CodeBuild
<a name="sample-ecr"></a>

Questo esempio utilizza un'immagine Docker in un repository di immagini Amazon Elastic Container Registry (Amazon ECR) per creare un progetto Go di esempio.

**Importante**  
L'esecuzione di questo esempio potrebbe comportare addebiti sul tuo account. AWS Questi includono possibili addebiti per AWS CodeBuild e per AWS risorse e azioni relative ad Amazon S3 AWS KMS, CloudWatch Logs e Amazon ECR. Per ulteriori informazioni, consulta [CodeBuild i prezzi, i prezzi](https://aws.amazon.com/codebuild/pricing) di [Amazon S3, i prezzi, i AWS Key Management Service](https://aws.amazon.com/s3/pricing) [prezzi](https://aws.amazon.com/kms/pricing) di [Amazon e CloudWatch i prezzi](https://aws.amazon.com/cloudwatch/pricing) di [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [Esegui l'esempio di Amazon ECR](#sample-ecr-running)

## Esegui l'esempio di Amazon ECR
<a name="sample-ecr-running"></a>

Utilizza le seguenti istruzioni per eseguire l'esempio di Amazon ECR per CodeBuild.

**Per eseguire questo esempio**

1. Per creare e inviare l'immagine Docker al tuo repository di immagini in Amazon ECR, completa i passaggi nella [Esegui l'esempio «Pubblica immagine Docker su Amazon ECR'](sample-docker.md#sample-docker-running) sezione del. [Esempio «Pubblica immagine Docker su Amazon ECR'](sample-docker.md)

1. Creazione di un progetto Go: 

   1. Crea i file come descritto nelle [File di un progetto Go](#sample-ecr-go-project-files) sezioni [Struttura di un progetto Go](#ecr-sample-go-project-file-structure) e di questo argomento, quindi caricali in un bucket di input S3 o in un repository AWS CodeCommit, GitHub o Bitbucket. 
**Importante**  
Non caricare `(root directory name)`, ma solo i file all'interno di `(root directory name)`   
Se si sta utilizzando un bucket di input S3, assicurarsi di creare un file ZIP contenente i file, quindi caricarlo nel bucket di input. Non aggiungere `(root directory name)` al file ZIP, ma solo i file all'interno di `(root directory name)`

   1. Crea un progetto di compilazione, esegui la build e visualizza le relative informazioni sulla build.

      Se usi il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del `create-project` comando potrebbe avere un aspetto simile a questo. (Sostituire i segnaposto con i propri valori).

      ```
      {
        "name": "sample-go-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
        },
        "artifacts": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-output-bucket",
          "packaging": "ZIP",
          "name": "GoOutputArtifact.zip"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/standard:5.0",
          "computeType": "BUILD_GENERAL1_SMALL"
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name",
        "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
      }
      ```

   1. Per ottenere l'artefatto di output della compilazione, aprire il bucket di output S3.

   1. Scaricare il file `GoOutputArtifact.zip` sul computer locale o sull'istanza, quindi estrarre il contenuto del file. Tra i contenuti estratti, selezionare il file `hello`. 

1.  Se una delle seguenti condizioni è vera, devi aggiungere le autorizzazioni al tuo repository di immagini in Amazon ECR in modo che AWS CodeBuild possa inserire la sua immagine Docker nell'ambiente di compilazione. 
   +  Il tuo progetto utilizza CodeBuild le credenziali per estrarre immagini Amazon ECR. Questo è indicato dal valore `CODEBUILD` nell'attributo `imagePullCredentialsType` di `ProjectEnvironment`. 
   +  Il tuo progetto utilizza un'immagine Amazon ECR per più account. In questo caso, il progetto deve utilizzare il suo ruolo di servizio per estrarre immagini Amazon ECR. Per abilitare questo comportamento, impostare l'attributo `imagePullCredentialsType` di `ProjectEnvironment` su `SERVICE_ROLE`. 

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

   1. Nella lista dei nomi dei repository, selezionare il nome del repository creato o selezionato.

   1. Dal riquadro di navigazione scegliere **Permissions (Autorizzazioni)**, **Edit (Modifica)**, quindi scegliere **Add statement (Aggiungi istruzione)**.

   1. In **Nome istruzione**, immettere un identificatore (ad esempio, **CodeBuildAccess**).

   1. Per **Effect (Effetto)**, lasciare selezionato **Allow (Abilita)**. Questo indica che vuoi consentire l'accesso a un altro account AWS .

   1. Per **Principal (Principale)**, eseguire una delle seguenti operazioni:
      + Se il tuo progetto utilizza CodeBuild le credenziali per estrarre un'immagine Amazon ECR, in **Service principal, inserisci**. **codebuild.amazonaws.com** 
      + Se il tuo progetto utilizza un'immagine Amazon ECR per più account, per **AWS account IDs** inserisci IDs gli AWS account a cui desideri consentire l'accesso.

   1. Saltare la lista **All IAM entities (Tutte le entità IAM)**.

   1. **Per **Azione**, seleziona le azioni di sola estrazione: ecr:GetDownloadUrlForLayer, **ecr:** ed **ecr**:. BatchGetImage BatchCheckLayerAvailability**

   1. Per **Condizioni**, aggiungi quanto segue:

      ```
      {
         "StringEquals":{
            "aws:SourceAccount":"<AWS-account-ID>",
            "aws:SourceArn":"arn:aws:codebuild:<region>:<AWS-account-ID>:project/<project-name>"
         }
      }
      ```

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

      Questa policy viene visualizzata in **Autorizzazioni**. L'entità principal è ciò che è stato immesso per **Principal (Entità principal)** al passaggio 3 di questa procedura:
      + Se il tuo progetto utilizza CodeBuild credenziali per estrarre un'immagine Amazon ECR, `"codebuild.amazonaws.com"` viene visualizzato in **Service** principals.
      + **Se il tuo progetto utilizza un'immagine Amazon ECR per più account, l'ID dell' AWS account a cui desideri consentire l'accesso viene visualizzato in AWS Account. IDs**

        La seguente policy di esempio utilizza sia CodeBuild le credenziali che un'immagine Amazon ECR per più account.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject",
                          "aws:SourceAccount": "111122223333"
                      }
                  }
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------
      + Se i tuoi progetti utilizzano CodeBuild credenziali e desideri che abbiano accesso aperto all'archivio Amazon ECR, puoi omettere `Condition` le chiavi e aggiungere la seguente politica di esempio. CodeBuild 

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              }
          ]
      }
      ```

------

1. Crea un progetto di compilazione, esegui la build e visualizza le informazioni sulla build.

   Se usi il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del `create-project` comando potrebbe avere un aspetto simile a questo. (Sostituire i segnaposto con i propri valori).

   ```
   {
     "name": "amazon-ecr-sample-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
     },
     "artifacts": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-output-bucket",
       "packaging": "ZIP",
       "name": "GoOutputArtifact.zip"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "account-ID.dkr.ecr.region-ID.amazonaws.com/your-Amazon-ECR-repo-name:tag",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

1. Per ottenere l'artefatto di output della compilazione, aprire il bucket di output S3.

1. Scaricare il file `GoOutputArtifact.zip` sul computer locale o sull'istanza, quindi estratte il contenuto del file `GoOutputArtifact.zip`. Tra i contenuti estratti, selezionare il file `hello`.

### Struttura di un progetto Go
<a name="ecr-sample-go-project-file-structure"></a>

Questo esempio assume la seguente struttura delle directory.

```
(root directory name)
├── buildspec.yml
└── hello.go
```

### File di un progetto Go
<a name="sample-ecr-go-project-files"></a>

Questo esempio utilizza i seguenti file.

`buildspec.yml` (in `(root directory name)`)

```
version: 0.2

phases:
  install: 
   runtime-versions: 
     golang: 1.13 
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Go code
      - go build hello.go 
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - hello
```

`hello.go` (in `(root directory name)`)

```
package main
import "fmt"

func main() {
  fmt.Println("hello world")
  fmt.Println("1+1 =", 1+1)
  fmt.Println("7.0/3.0 =", 7.0/3.0)
  fmt.Println(true && false)
  fmt.Println(true || false)
  fmt.Println(!true)
}
```

# Esempio di Amazon Elastic File System per AWS CodeBuild
<a name="sample-efs"></a>

 Potresti voler creare le tue AWS CodeBuild build su Amazon Elastic File System, un servizio di file scalabile e condiviso per istanze Amazon EC2. La capacità di storage di Amazon EFS è elastica, quindi aumenta o si riduce man mano che i file vengono aggiunti e rimossi. Ha una semplice interfaccia di servizi Web che ti permette di creare e configurare i file system. Gestisce anche tutta l'infrastruttura di storage dei file, quindi non devi preoccuparti di distribuire, applicare patch o mantenere le configurazioni dei file system. Per ulteriori informazioni, consulta [Cos'è Amazon Elastic File System?](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) nella *Amazon Elastic File System User Guide*. 

 Questo esempio mostra come configurare un CodeBuild progetto in modo che monti e poi crei un'applicazione Java su un file system Amazon EFS. Prima di iniziare, è necessario disporre di un'applicazione Java pronta per la creazione che venga caricata in un bucket di input S3 o in un AWS CodeCommit repository GitHub Enterprise Server o Bitbucket. GitHub 

I dati in transito per il file system sono crittografati. Per crittografare i dati in transito utilizzando un'immagine diversa, consulta [Crittografia dei dati in transito](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html). 

**Topics**
+ [Utilizzo AWS CodeBuild con Amazon Elastic File System](#sample-efs-high-level-steps)
+ [Risolvi i problemi di integrazione con Amazon EFS](sample-efs-troubleshooting.md)

## Utilizzo AWS CodeBuild con Amazon Elastic File System
<a name="sample-efs-high-level-steps"></a>

L'esempio copre i quattro passaggi di alto livello necessari per utilizzare Amazon EFS con AWS CodeBuild. Questi sono: 

1. Crea un cloud privato virtuale (VPC) nel tuo AWS account. 

1. Creare un file system che utilizza questo VPC. 

1. Crea e costruisci un CodeBuild progetto che utilizza il VPC. Il CodeBuild progetto utilizza quanto segue per identificare il file system:
   +  Un identificatore univoco del file system. Si sceglie l'identificatore quando si specifica il file system nel progetto di compilazione.
   + L'ID del file system. L'ID viene visualizzato quando visualizzi il file system nella console Amazon EFS.
   +  Un punto di montaggio. Questa è una directory nel contenitore Docker che monta il file system. 
   + Opzioni di montaggio. Includono dettagli su come montare il file system.

1. Esamina il progetto di compilazione per assicurarti che siano stati generati i file e le variabili di progetto corretti.

**Nota**  
 Un file system creato in Amazon EFS è supportato solo su piattaforme Linux. 

 

**Topics**
+ [Fase 1: Creare un VPC utilizzando CloudFormation](#sample-efs-create-vpc)
+ [Fase 2: crea un file system Amazon Elastic File System con il tuo VPC](#sample-efs-create-efs)
+ [Fase 3: creare un CodeBuild progetto da utilizzare con Amazon EFS](#sample-efs-create-acb)
+ [Passaggio 4: rivedi il progetto di compilazione](#sample-efs-summary)

### Fase 1: Creare un VPC utilizzando CloudFormation
<a name="sample-efs-create-vpc"></a>

 Crea il tuo VPC con un CloudFormation modello. 

1.  Segui le istruzioni [CloudFormation Modello VPC](cloudformation-vpc-template.md) per l'uso CloudFormation per creare un VPC. 
**Nota**  
 Il VPC creato da questo CloudFormation modello ha due sottoreti private e due sottoreti pubbliche. È necessario utilizzare solo sottoreti private quando si utilizza AWS CodeBuild per montare il file system creato in Amazon EFS. Se si utilizza una delle sottoreti pubblici, la build ha esito negativo. 

1. Accedi Console di gestione AWS e apri la console Amazon VPC all'indirizzo. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1.  Scegli il VPC con cui hai creato. CloudFormation

1. Prendere nota del nome del VPC e dell'ID presenti nella scheda **Description (Descrizione)**. Questo ID sarà necessario al momento della creazione del progetto AWS CodeBuild più avanti in questo esempio. 

### Fase 2: crea un file system Amazon Elastic File System con il tuo VPC
<a name="sample-efs-create-efs"></a>

 Crea un semplice file system Amazon EFS per questo esempio utilizzando il VPC creato in precedenza. 

1. Accedi Console di gestione AWS e apri la console Amazon EFS all'indirizzo [ https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1.  Scegliere **Create file system (Crea file system)**. 

1.  In **VPC** scegliere il nome VPC annotato in precedenza in questo esempio. 

1.  Lasciare le zone di disponibilità associate alle sottoreti selezionate. 

1.  Selezionare **Next Step (Fase successiva)**. 

1.  In **Aggiungi tag**, per la chiave **Name** predefinita, in **Value**, inserisci il nome del tuo file system Amazon EFS. 

1.  Mantenere **Bursting** e **General Purpose (Utilizzo generico)** selezionati come performance predefinita e modalità di throughput, quindi scegliere **Next Step (Fase successiva)**. 

1. Per **Configure client access (Configura accesso client)**, scegliere **Next Step (Passaggio successivo)**.

1.  Scegliere **Create File System (Crea file system)**. 

1.  (Facoltativo) Ti consigliamo di aggiungere una policy al tuo file system Amazon EFS che applichi la crittografia dei dati in transito. **Nella console Amazon EFS, scegli **Politica del file system**, scegli **Modifica**, seleziona la casella Applica la **crittografia in transito per tutti i client**, quindi scegli Salva.**

### Fase 3: creare un CodeBuild progetto da utilizzare con Amazon EFS
<a name="sample-efs-create-acb"></a>

 Crea un AWS CodeBuild progetto che utilizzi il VPC creato in precedenza in questo esempio. Quando la build viene eseguita, monta il file system Amazon EFS creato in precedenza. Successivamente, memorizza il file.jar creato dall'applicazione Java nella directory del punto di montaggio del file system.

1. Apri la AWS CodeBuild console su [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Nel riquadro di navigazione scegliere **Build projects (Progetti di compilazione)**, quindi **Create build project (Crea progetto di compilazione)**. 

1.  In **Project name (Nome progetto)** immettere un nome per il progetto. 

1.  In **Source provider (Provider di origine)** scegliere il repository contenente l'applicazione Java che si desidera compilare. 

1.  Inserisci le informazioni, come l'URL del repository, da utilizzare per localizzare l' CodeBuild applicazione. Le opzioni variano a seconda del provider di origine. Per ulteriori informazioni, consulta [Choose source provider](create-project.md#create-project-source-provider). 

1.  In **Environment image (Immagine ambiente)** scegliere **Managed image (Immagine gestita)**. 

1.  In **Operating system (Sistema operativo)**, scegliere **Amazon Linux 2**. 

1. In **Runtime(s) (Runtime)**, seleziona **Standard**. 

1.  Da **Image**, scegliete **aws/codebuild/amazonlinux-x86\$164-standard:4.0**. 

1.  Da **Environment type (Tipo ambiente)**, seleziona **Linux**. 

1.  In **Service role (Ruolo del servizio)** scegliere **New service role (Nuovo ruolo del servizio)**. In **Nome ruolo, inserisci un nome** per il ruolo creato per te. CodeBuild 

1. Espandere **Additional configuration (Configurazione aggiuntiva)**.

1.  Seleziona **Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Abilita questo flag se desideri creare immagini Docker o se desideri che le build ottengano privilegi elevati)**.
**Nota**  
Per impostazione predefinita, il daemon Docker è abilitato per le build non VPC. Se desideri utilizzare i contenitori Docker per le build VPC, [consulta Runtime Privilege e Linux Capabilities sul sito Web di Docker Docs e](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) abilita la modalità privilegiata. Inoltre, Windows non supporta la modalità privilegiata.

1.  In **VPC** scegliere l'ID VPC. 

1.  In **Subnets (Sottoreti)** scegliere una o più sottoreti private associate al VPC. È necessario utilizzare sottoreti private in una build che monta un file system Amazon EFS. Se si utilizza una sottorete pubblica, la build ha esito negativo. 

1.  Da **Security Group (Gruppo di sicurezza)**, scegliere il gruppo di sicurezza predefinito.

1.  In **File Systems (File system)**, immettere le seguenti informazioni:
   + Per **Identifier**, immettere un identificatore univoco del file system. Deve contenere meno di 129 caratteri e solo caratteri alfanumerici e caratteri di sottolineatura. CodeBuild utilizza questo identificatore per creare una variabile di ambiente che identifichi il file system elastico. Il formato della variabile di ambiente è `CODEBUILD_<file_system_identifier>` in lettere maiuscole. Ad esempio, se si immette `my_efs`, la variabile di ambiente è `CODEBUILD_MY_EFS`. 
   + Per **ID**, scegliere l'ID del file system. 
   + (Facoltativo) Inserisci una directory nel file system. CodeBuild monta questa directory. Se si lascia vuoto il **percorso della directory**, CodeBuild monta l'intero file system. Il percorso del file è relativo rispetto alla root del file system. 
   + Per **Mount point**, inserisci il percorso assoluto della directory nel contenitore di build in cui è montato il file system. Se questa directory non esiste, la CodeBuild crea durante la compilazione. 
   + (Facoltativo) Immettere le opzioni di montaggio. Se lasci vuote **le opzioni di montaggio**, CodeBuild utilizza le opzioni di montaggio predefinite:

     ```
     nfsvers=4.1
     rsize=1048576
     wsize=1048576
     hard
     timeo=600
     retrans=2
     ```

     Per ulteriori informazioni, consulta le [opzioni di montaggio NFS consigliate](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-nfs-mount-settings.html) nella *Amazon Elastic File System User Guide*. 

1.  Per **Build specification (Specifiche di compilazione)** scegliere **Insert build commands (Inserisci comandi di compilazione)** e selezionare **Switch to editor (Passa a editor)**. 

1.  Inserisci i seguenti comandi build spec nell'editor. Sostituire `<file_system_identifier>` con l'identificatore inserito nel passaggio 17. Utilizzare lettere maiuscole (ad esempio, `CODEBUILD_MY_EFS`).

   ```
   version: 0.2
   phases:
     install:
       runtime-versions:
         java: corretto11    
     build:
       commands:
         - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
   ```

1.  Utilizzare i valori di default per tutte le altre impostazioni, quindi scegliere **Create build project (Crea progetto di compilazione)**. Al termine della compilazione viene visualizzata la pagina della console per il progetto. 

1.  Selezionare **Start build (Avvia compilazione)**. 

### Passaggio 4: rivedi il progetto di compilazione
<a name="sample-efs-summary"></a>



 Dopo aver creato il AWS CodeBuild progetto: 
+  Hai un file.jar creato dalla tua applicazione Java che è integrato nel tuo file system Amazon EFS nella tua directory dei punti di montaggio. 
+  Una variabile di ambiente che identifichi il file system viene creata utilizzando l'identificatore del file system immesso al momento della creazione del progetto. 

 Per ulteriori informazioni, consulta [Mounting file system](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html) nella *Amazon Elastic File System User Guide*. 

# Risolvi i problemi di integrazione con Amazon EFS
<a name="sample-efs-troubleshooting"></a>

Di seguito sono riportati gli errori che potresti riscontrare durante la configurazione di Amazon EFS con CodeBuild.

**Topics**
+ [CLIENT\$1ERROR: montaggio di '127.0.0.1: /' non riuscito. Autorizzazione negata](#sample-efs-troubleshooting.permission-denied)
+ [CLIENT\$1ERROR: montaggio di '127.0.0.1: /' non riuscito. Reimpostazione della connessione da parte di un peer](#sample-efs-troubleshooting.connection-reset)
+ [VPC\$1CLIENT\$1ERROR: errore EC2 imprevisto: UnauthorizedOperation](#sample-efs-troubleshooting.unauthorized-operation)

## CLIENT\$1ERROR: montaggio di '127.0.0.1: /' non riuscito. Autorizzazione negata
<a name="sample-efs-troubleshooting.permission-denied"></a>

L'autorizzazione IAM non è supportata per il montaggio di Amazon EFS con CodeBuild. Se utilizzi una policy del file system Amazon EFS personalizzata, dovrai concedere l'accesso in lettura e scrittura a tutti i principali IAM. Esempio:

```
"Principal": {
  "AWS": "*"
}
```

## CLIENT\$1ERROR: montaggio di '127.0.0.1: /' non riuscito. Reimpostazione della connessione da parte di un peer
<a name="sample-efs-troubleshooting.connection-reset"></a>

Esistono due possibili cause di questo errore:
+ La sottorete CodeBuild VPC si trova in una zona di disponibilità diversa rispetto alla destinazione di montaggio di Amazon EFS. Puoi risolvere questo problema aggiungendo una sottorete VPC nella stessa zona di disponibilità del target di montaggio Amazon EFS.
+ Il gruppo di sicurezza non dispone delle autorizzazioni per comunicare con Amazon EFS. Puoi risolvere questo problema aggiungendo una regola in entrata per consentire tutto il traffico proveniente dal VPC (aggiungi il blocco CIDR primario per il tuo VPC) o dal gruppo di sicurezza stesso.

## VPC\$1CLIENT\$1ERROR: errore EC2 imprevisto: UnauthorizedOperation
<a name="sample-efs-troubleshooting.unauthorized-operation"></a>

Questo errore si verifica quando tutte le sottoreti nella configurazione VPC per il CodeBuild progetto sono sottoreti pubbliche. È necessario disporre di almeno una sottorete privata nel VPC per garantire la connettività di rete. 

# AWS CodePipeline campioni per CodeBuild
<a name="sample-codepipeline"></a>

Questa sezione descrive esempi di integrazioni tra CodePipeline e CodeBuild.


| Project N.E.M.O. | Description | 
| --- | --- | 
|  [Esempi di CodePipeline/CodeBuild integrazioni e build in batch](#sample-pipeline-batch)  |  Questi esempi mostrano come utilizzare per AWS CodePipeline creare un progetto di compilazione che utilizza build in batch.  | 
|  [Esempio di CodePipeline/CodeBuild integrazione con più sorgenti di input e artefatti di output](#sample-pipeline-multi-input-output)  |  Questo esempio dimostra come utilizzarlo per AWS CodePipeline creare un progetto di compilazione che utilizza più fonti di input per creare più artefatti di output.  | 

## Esempi di CodePipeline/CodeBuild integrazioni e build in batch
<a name="sample-pipeline-batch"></a>

AWS CodeBuild supporta le build in batch. Gli esempi seguenti mostrano come utilizzare per AWS CodePipeline creare un progetto di compilazione che utilizza build in batch.

È possibile utilizzare un file in formato JSON che definisce la struttura della pipeline e quindi utilizzarlo con il per creare la pipeline. AWS CLI *Per ulteriori informazioni, consulta il riferimento alla struttura della [AWS CodePipeline pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) nella Guida per l'utente.AWS CodePipeline *

### Creazione in batch con singoli artefatti
<a name="sample-pipeline-batch.separate-artifacts"></a>

Utilizza il seguente file JSON come esempio di struttura di pipeline che crea una build in batch con artefatti separati. Per abilitare la compilazione in batch CodePipeline, impostate il `BatchEnabled` parametro dell'oggetto su. `configuration` `true`

```
{
  "pipeline": {
    "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
    "stages": [
      {
        "name": "Source",
        "actions": [
          {
            "inputArtifacts": [],
            "name": "Source1",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source1"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-input-bucket-name>",
              "S3ObjectKey": "my-source-code-file-name.zip"
            },
            "runOrder": 1
          },
          {
            "inputArtifacts": [],
            "name": "Source2",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source2"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-other-input-bucket-name>",
              "S3ObjectKey": "my-other-source-code-file-name.zip"
            },
            "runOrder": 1
          }
        ]
      },
      {
        "name": "Build",
        "actions": [
          {
            "inputArtifacts": [
              {
                "name": "source1"
              },
              {
                "name": "source2"
              }
            ],
            "name": "Build",
            "actionTypeId": {
              "category": "Build",
              "owner": "AWS",
              "version": "1",
              "provider": "CodeBuild"
            },
            "outputArtifacts": [
              {
                "name": "build1"
              },
              {
                "name": "build1_artifact1"
              },
              {
                "name": "build1_artifact2"
              },
              {
                "name": "build2_artifact1"
              },
              {
                "name": "build2_artifact2"
              }
            ],
            "configuration": {
              "ProjectName": "my-build-project-name",
              "PrimarySource": "source1",
              "BatchEnabled": "true"
            },
            "runOrder": 1
          }
        ]
      }
    ],
    "artifactStore": {
      "type": "S3",
      "location": "<AWS-CodePipeline-internal-bucket-name>"
    },
    "name": "my-pipeline-name",
    "version": 1
  }
}
```

Di seguito è riportato un esempio di file CodeBuild buildspec che funzionerà con questa configurazione della pipeline.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
  secondary-artifacts:
    artifact1:
      files:
        - output_file
    artifact2:
      files:
        - output_file
```

I nomi degli artefatti di output specificati nel file JSON della pipeline devono corrispondere all'identificatore delle build e degli artefatti definiti nel file buildspec. La sintassi è per gli artefatti primari e \$1 per gli artefatti *buildIdentifier* secondari. *buildIdentifier* *artifactIdentifier*

Ad esempio, per il nome dell'artefatto di output`build1`, CodeBuild caricherà l'artefatto principale nella posizione di. `build1` `build1` Per il nome di output`build1_artifact1`, CodeBuild caricherà l'artefatto secondario di nella posizione `artifact1` `build1` di, e così via. `build1_artifact1` Se viene specificata una sola posizione di output, il nome deve essere *buildIdentifier* solo.

Dopo aver creato il file JSON, puoi creare la tua pipeline. Utilizzate il AWS CLI per eseguire il comando **create-pipeline** e passate il file al parametro. `--cli-input-json` Per ulteriori informazioni, consulta [Create a pipeline (CLI](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli)) nella Guida per *AWS CodePipeline l'*utente. 

### Creazione in batch con artefatti combinati
<a name="sample-pipeline-batch.combined-artifacts"></a>

Utilizzate il seguente file JSON come esempio di struttura di pipeline che crea una build in batch con artefatti combinati. Per abilitare la compilazione in batch CodePipeline, impostate il `BatchEnabled` parametro dell'oggetto su. `configuration` `true` Per combinare gli elementi di costruzione nella stessa posizione, impostate il `CombineArtifacts` parametro dell'`configuration`oggetto su. `true`

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-input-bucket-name>",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-other-input-bucket-name>",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "output1 "
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1",
             "BatchEnabled": "true",
             "CombineArtifacts": "true"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "<AWS-CodePipeline-internal-bucket-name>"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

Di seguito è riportato un esempio di file CodeBuild buildspec che funzionerà con questa configurazione della pipeline.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
```

Se gli artefatti combinati sono abilitati per la compilazione in batch, è consentito un solo output. CodeBuild combinerà gli artefatti principali di tutte le build in un unico file ZIP.

Dopo aver creato il file JSON, puoi creare la tua pipeline. Utilizzate il AWS CLI per eseguire il comando **create-pipeline** e passare il file al parametro. `--cli-input-json` Per ulteriori informazioni, consulta [Create a pipeline (CLI](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli)) nella Guida per *AWS CodePipeline l'*utente. 

## Esempio di CodePipeline/CodeBuild integrazione con più sorgenti di input e artefatti di output
<a name="sample-pipeline-multi-input-output"></a>

Un AWS CodeBuild progetto può richiedere più di una fonte di input. Può anche creare più di un artefatto di output. Questo esempio dimostra come utilizzarlo per AWS CodePipeline creare un progetto di compilazione che utilizzi più fonti di input per creare più artefatti di output. Per ulteriori informazioni, consulta [Diverse origini di input ed esempi di artefatti di output](sample-multi-in-out.md).

È possibile utilizzare un file in formato JSON che definisce la struttura della pipeline e quindi utilizzarlo con il per creare la pipeline. AWS CLI Utilizzare il seguente file JSON come esempio di una struttura di pipeline che crea una compilazione con più di un'origine di input e più di un artefatto di output. Più avanti in questo esempio viene illustrato come questo file specifica i numerosi input e output. *Per ulteriori informazioni, consulta il riferimento alla struttura della [CodePipeline pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) nella Guida per l'utente.AWS CodePipeline *

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "my-input-bucket-name",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "my-other-input-bucket-name",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "AWS CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "artifact1"
            },
            {
              "name": "artifact2"
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "AWS-CodePipeline-internal-bucket-name"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

 In questo file JSON: 
+ Una delle origini di input deve essere un percorso `PrimarySource`. Questa fonte è la directory in cui CodeBuild cerca ed esegue il file buildspec. La parola chiave `PrimarySource` viene utilizzata per specificare la fonte primaria nella `configuration` sezione dello CodeBuild stage del file JSON. 
+ Ogni origine di input è installata nella propria directory. Questa directory viene archiviata nella variabile di ambiente integrata `$CODEBUILD_SRC_DIR` per l'origine principale e in`$CODEBUILD_SRC_DIR_yourInputArtifactName` per tutte le altre origini. Per la pipeline di questo esempio, le due directory delle origini di input sono `$CODEBUILD_SRC_DIR` e `$CODEBUILD_SRC_DIR_source2`. Per ulteriori informazioni, consulta [Variabili di ambiente degli ambienti di compilazione](build-env-ref-env-vars.md). 
+ I nomi degli artefatti di output specificati nel file JSON della pipeline devono corrispondere ai nomi degli artefatti secondari definiti nel file buildspec. Questa pipeline utilizza il seguente file buildspec. Per ulteriori informazioni, consulta [Sintassi buildspec](build-spec-ref.md#build-spec-ref-syntax). 

  ```
  version: 0.2
  
  phases:
    build:
      commands:
        - touch source1_file
        - cd $CODEBUILD_SRC_DIR_source2
        - touch source2_file
  
  artifacts:
    files:
      - '**/*'
    secondary-artifacts:
      artifact1:
        base-directory: $CODEBUILD_SRC_DIR
        files:
          - source1_file
      artifact2:
        base-directory: $CODEBUILD_SRC_DIR_source2
        files:
          - source2_file
  ```

 Dopo aver creato il file JSON, puoi creare la tua pipeline. Utilizzate il AWS CLI per eseguire il comando **create-pipeline** e passate il file al parametro. `--cli-input-json` Per ulteriori informazioni, consulta [Create a pipeline (CLI](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli)) nella Guida per *AWS CodePipeline l'*utente. 

# AWS Config campionare con CodeBuild
<a name="how-to-integrate-config"></a>

AWS Config fornisce un inventario delle AWS risorse e una cronologia delle modifiche alla configurazione di tali risorse. AWS Config ora supporta AWS CodeBuild come AWS risorsa, il che significa che il servizio può tracciare i tuoi CodeBuild progetti. Per ulteriori informazioni su AWS Config, consulta [What is AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) nella *Guida per gli AWS Config sviluppatori*.

Puoi visualizzare le seguenti informazioni sulle CodeBuild risorse nella pagina **Inventario delle risorse** della AWS Config console:
+ Una cronologia delle modifiche alla CodeBuild configurazione.
+ Dettagli di configurazione per ogni CodeBuild progetto.
+ Rapporti con altre AWS risorse.
+ Un elenco di modifiche ai tuoi CodeBuild progetti.

**Topics**
+ [Usare CodeBuild con AWS Config](#how-to-integrate-config-run)
+ [Passaggio 3: Visualizza AWS CodeBuild i dati nella console AWS Config](#viewing-config-details)

## Usare CodeBuild con AWS Config
<a name="how-to-integrate-config-run"></a>

Le procedure riportate in questo argomento mostrano come impostare AWS Config e cercare CodeBuild progetti.

**Topics**
+ [Prerequisiti](#how-to-create-a-build-project)
+ [Fase 1: Configurazione AWS Config](#setup-config)
+ [Passaggio 2: cerca i AWS CodeBuild progetti](#lookup-projects)

### Prerequisiti
<a name="how-to-create-a-build-project"></a>

Crea il tuo AWS CodeBuild progetto. Per istruzioni, consulta [Creazione di un progetto di compilazione](create-project.md).

### Fase 1: Configurazione AWS Config
<a name="setup-config"></a>
+ [Impostazione di AWS Config (console)](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)
+ [Impostazione di AWS Config (AWS CLI)](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli.html)

**Nota**  
Dopo aver completato la configurazione, potrebbero essere necessari fino a 10 minuti prima di poter visualizzare AWS CodeBuild i progetti nella AWS Config console.

### Passaggio 2: cerca i AWS CodeBuild progetti
<a name="lookup-projects"></a>

1. Accedi alla console di AWS gestione e apri la AWS Config console all'indirizzo [https://console.aws.amazon.com/config.](https://console.aws.amazon.com/config) 

1. Nella pagina **Inventario delle risorse**, seleziona **AWS CodeBuild Progetto in Tipo** di **risorsa**. Scorri verso il basso e seleziona la casella di controllo **CodeBuilddel progetto**.

1. Scegliere **Look up (Cerca)**.

1. Dopo aver aggiunto l'elenco dei CodeBuild progetti, scegli il link del nome CodeBuild del progetto nella colonna **Config timeline**.

## Passaggio 3: Visualizza AWS CodeBuild i dati nella console AWS Config
<a name="viewing-config-details"></a>

Quando cerchi le risorse nella pagina **Inventario delle risorse**, puoi scegliere la AWS Config sequenza temporale per visualizzare i dettagli CodeBuild del tuo progetto. La pagina dei dettagli per una risorsa fornisce informazioni sulla configurazione, sulle relazioni e sul numero di modifiche apportate a tale risorsa. 

I blocchi nella parte superiore della pagina sono complessivamente denominati timeline. La timeline mostra la data e l'ora in cui è stata effettuata la registrazione.

Per ulteriori informazioni, consulta [Visualizzazione dei dettagli di configurazione nella AWS Config console](https://docs.aws.amazon.com/config/latest/developerguide/view-manage-resource-console.html) nella *Guida per gli AWS Config sviluppatori*.

# 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, falliscono, 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 *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* e*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) 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 in 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 *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* e*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) 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, in [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-based Filtering 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** e quindi scegli Elimina.**

# Informazioni di riferimento sul formato di input delle notifiche di compilazione
<a name="sample-build-notifications-ref"></a>

CloudWatch invia notifiche in formato JSON.

Le notifiche di modifica dello stato di compilazione utilizzano il seguente formato:

```
{
  "version": "0",
  "id": "c030038d-8c4d-6141-9545-00ff7b7153EX",
  "detail-type": "CodeBuild Build State Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:28Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "build-status": "SUCCEEDED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
         {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]
    },
    "current-phase": "COMPLETED",
    "current-phase-context": "[]",
    "version": "1"
  }
}
```

Le notifiche di modifica della fase di compilazione utilizzano il seguente formato:

```
{
  "version": "0",
  "id": "43ddc2bd-af76-9ca5-2dc7-b695e15adeEX",
  "detail-type": "CodeBuild Build Phase Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:21Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "completed-phase": "COMPLETED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "completed-phase-context": "[]",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]  
    },
    "completed-phase-status": "SUCCEEDED",
    "completed-phase-duration-seconds": 4,
    "version": "1",
    "completed-phase-start": "Sep 1, 2017 4:14:21 PM",
    "completed-phase-end": "Sep 1, 2017 4:14:26 PM"
  }
}
```