Visualizza una build in esecuzione in Session Manager - AWS CodeBuild

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

Visualizza una build in esecuzione in Session Manager

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.

Prerequisiti

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 l' AWS Systems Manager utente. La versione di SSM Agent deve essere 3.0.1295.0 o successiva.

    2. Copia il file https://github.com/aws/ aws-codebuild-docker-images /blob/master/ubuntu/standard/5.0/ .json nella directory dell'immagine amazon-ssm-agent. /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:

    { "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:<region-id>:<account-id>:log-group:*:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region-id>:<account-id>:log-group:<log-group-name>:*" } ] }
    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 per l'utente.AWS Systems Manager

Metti in pausa la compilazione

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 ti consentirà di connetterti 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

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 all'indirizzo https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Nel riquadro di navigazione, scegliere Build projects (Progetti di compilazione). Scegli il progetto di compilazione, quindi scegli Avvia compilazione con sostituzioni.

  3. Selezionare Advanced build overrides (Sostituzioni avanzate della compilazione).

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

  5. Apportate le altre modifiche desiderate e scegliete Avvia compilazione.

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

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
Nota

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 per l' AWS Systems Manager utente.

  1. Chiama l'batch-get-buildsapi 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
  2. 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.

  3. 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 testoHello World.

Riprendi la compilazione

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

$ codebuild-resume