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 build e visualizzare lo stato del contenitore.
Nota
Questa funzionalità non è disponibile negli ambienti Windows.
Argomenti
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'SSMagente è già installato e l'SSMagente ContainerMode è abilitato.
Se stai usando un'immagine personalizzata per la tua build, procedi come segue:
-
Installa l'SSMagente. Per ulteriori informazioni, consulta Installare manualmente SSM l'agente sulle EC2 istanze per Linux nella Guida per l' AWS Systems Manager utente. La versione dell'SSMagente deve essere 3.0.1295.0 o successiva.
-
Copia il file 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à Container nell'agente. SSM
Nota
Le immagini personalizzate richiederebbero SSM l'agente più aggiornato perché questa funzionalità funzioni come previsto.
-
-
Il ruolo CodeBuild di servizio deve avere la seguente SSM politica:
{ "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 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
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:
Apri la AWS CodeBuild console su https://console.aws.amazon.com/codesuite/codebuild/home
. -
Nel riquadro di navigazione, scegliere Build projects (Progetti di compilazione). Scegli il progetto di compilazione, quindi scegli Avvia build with overrides.
-
Selezionare Advanced build overrides (Sostituzioni avanzate della compilazione).
-
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.
-
Apportate le altre modifiche desiderate e scegliete Avvia compilazione.
-
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 AWS CLI nella Guida per l' AWS Systems Manager utente.
-
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 -
Copia il valore della
sessionTarget
proprietà. Il nome dellasessionTarget
proprietà può variare a seconda del tipo di output delaws
comando. Questo è il motivo--output json
per cui viene aggiunto al comando nel passaggio precedente. -
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