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 secondo gli standard di Linux l'SSMagente è già installato e l'SSMagente ContainerMode è abilitato.

    Se stai usando un'immagine personalizzata per la tua build, procedi come segue:

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

    2. 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 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 su 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 build with overrides.

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