

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

# Compilazioni di debug con Session Manager
<a name="session-manager"></a>

In AWS CodeBuild, puoi mettere in pausa una build in esecuzione e quindi utilizzare AWS Systems Manager Session Manager per connetterti al contenitore di compilazione e visualizzare lo stato del contenitore.

**Nota**  
Questa funzionalità non è disponibile negli ambienti Windows.

**Topics**
+ [

## Prerequisiti
](#ssm.prerequisites)
+ [

## Metti in pausa la compilazione
](#ssm-pause-build)
+ [

## Avvia la compilazione
](#ssm-start-build)
+ [

## Connect al container di compilazione
](#ssm-connect)
+ [

## Riprendi la compilazione
](#ssm-resume-build)

## Prerequisiti
<a name="ssm.prerequisites"></a>

Per consentire l'utilizzo di Session Manager con la sessione di compilazione, è necessario abilitare la connessione alla sessione per la build. Esistono due prerequisiti:
+ CodeBuild Nelle immagini curate dagli standard Linux l'agente SSM è già installato e l'agente SSM è abilitato. ContainerMode 

  Se stai usando un'immagine personalizzata per la tua build, fai quanto segue:

  1. Installazione di SSM Agent Per ulteriori informazioni, consulta [Installare manualmente l'agente SSM sulle istanze EC2 per Linux nella Guida per](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) l' AWS Systems Manager utente. La versione di SSM Agent deve essere 3.0.1295.0 o successiva.

  1. Copia il file [https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json](https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json) nella directory dell'immagine. `/etc/amazon/ssm/` Ciò abilita la modalità contenitore nell'agente SSM.
**Nota**  
Le immagini personalizzate richiederebbero l'agente SSM più aggiornato affinché questa funzionalità funzioni come previsto.
+ Il ruolo CodeBuild di servizio deve avere la seguente politica SSM:

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	  
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
         ],
         "Resource": "*"
       }
     ]
  }
  ```

------

  Puoi fare in modo che la CodeBuild console alleghi automaticamente questa policy al tuo ruolo di servizio all'avvio della build. In alternativa, puoi allegare manualmente questa politica al tuo ruolo di servizio.
+ Se l'**attività di controllo e registrazione della sessione** è abilitata nelle preferenze di Systems Manager, il ruolo di CodeBuild servizio deve disporre anche di autorizzazioni aggiuntive. Le autorizzazioni sono diverse, a seconda di dove sono archiviati i log.  
CloudWatch Registri  
Se utilizzi CloudWatch Logs per archiviare i log, aggiungi la seguente autorizzazione al CodeBuild ruolo di servizio:    
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "logs:DescribeLogGroups",
              "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*:*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:MyLogGroup:*"
          }
      ]
  }
  ```  
Simple Storage Service (Amazon S3)  
Se utilizzi Amazon S3 per archiviare i log, aggiungi la seguente autorizzazione al CodeBuild ruolo di servizio:    
****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "s3:GetEncryptionConfiguration",
          "s3:PutObject"
        ],
        "Resource": [
          "arn:aws:s3:::<bucket-name>",
          "arn:aws:s3:::<bucket-name>/*"
        ]
      }
    ]
  }
  ```

  *Per ulteriori informazioni, consulta [Controllo e registrazione dell'attività della sessione nella Guida](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging-auditing.html) per l'utente.AWS Systems Manager *

## Metti in pausa la compilazione
<a name="ssm-pause-build"></a>

Per mettere in pausa la compilazione, inserisci il **codebuild-breakpoint** comando in una qualsiasi delle fasi di compilazione nel tuo file buildspec. La compilazione verrà messa in pausa a questo punto, il che consente di connettersi al contenitore di compilazione e visualizzare il contenitore nello stato corrente. 

Ad esempio, aggiungi quanto segue alle fasi di compilazione nel tuo file buildspec.

```
phases:
  pre_build:
    commands:
      - echo Entered the pre_build phase...
      - echo "Hello World" > /tmp/hello-world
      - codebuild-breakpoint
```

Questo codice crea il `/tmp/hello-world` file e quindi sospende la compilazione a questo punto.

## Avvia la compilazione
<a name="ssm-start-build"></a>

Per consentire l'utilizzo di Session Manager con la sessione di compilazione, è necessario abilitare le connessioni di sessione per la build. Per fare ciò, quando avvii la build, segui questi passaggi:

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)**. Scegli il progetto di compilazione, quindi scegli **Avvia build** with overrides.

1. Selezionare **Advanced build overrides (Sostituzioni avanzate della compilazione)**.

1. Nella sezione **Ambiente**, scegli l'opzione **Abilita la connessione alla sessione.** Se questa opzione non è selezionata, tutti i **codebuild-resume** comandi **codebuild-breakpoint** and vengono ignorati.

1. Apportate le altre modifiche desiderate e scegliete **Avvia compilazione**. 

1. Monitora lo stato della build nella console. Quando la sessione è disponibile, il link **AWS Session Manager** viene visualizzato nella sezione **Build status**.

## Connect al container di compilazione
<a name="ssm-connect"></a>

Puoi connetterti al contenitore di compilazione in due modi:

CodeBuild console  
In un browser web, apri il link **AWS Session Manager** per connetterti al contenitore di build. Si apre una sessione di terminale che consente di sfogliare e controllare il contenitore di compilazione. 

AWS CLI  
Per questa procedura, è necessario che sul computer locale sia installato il plug-in Session Manager. Per ulteriori informazioni, consulta [Installare il plug-in Session Manager per la AWS CLI nella Guida](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html) per l' AWS Systems Manager utente. 

1. Chiama l'**batch-get-builds**api con l'ID di build per ottenere informazioni sulla build, incluso l'identificatore di destinazione della sessione. Il nome della proprietà dell'identificatore di destinazione della sessione varia a seconda del tipo di output del `aws` comando. Questo è il motivo per cui `--output json` viene aggiunto al comando.

   ```
   aws codebuild batch-get-builds --ids <buildID> --region <region> --output json
   ```

1. Copia il valore della `sessionTarget` proprietà. Il nome della `sessionTarget` proprietà può variare a seconda del tipo di output del `aws` comando. Questo è il motivo `--output json` per cui viene aggiunto al comando nel passaggio precedente.

1. Usa il seguente comando per connetterti al contenitore di compilazione.

   ```
   aws ssm start-session --target <sessionTarget> --region <region>
   ```

Per questo esempio, verificate che il `/tmp/hello-world` file esista e contenga il testo`Hello World`.

## Riprendi la compilazione
<a name="ssm-resume-build"></a>

Dopo aver finito di esaminare il contenitore di compilazione, emetti il **codebuild-resume** comando dalla shell del contenitore.

```
$ codebuild-resume
```