Come posso risolvere l'errore di esecuzione della pipeline di creazione immagini "Unable to bootstrap TOE" (Impossibile eseguire boostrap TOE) in Image Builder?

Ultimo aggiornamento: 25/07/2022

L'esecuzione della pipeline di creazione immagini non riesce con l'errore "Unable to bootstrap TOE" (Impossibile eseguire boostrap TOE) in EC2 Image Builder. Come posso risolvere questo problema?

Breve descrizione

Nella fase di creazione di una pipeline di creazione immagini, l'istanza di creazione di Amazon Elastic Compute Cloud (Amazon EC2) installa ed esegue lo script di bootstrap AWS Task Orchestrator and Executor (AWS TOE) bootstrap.sh. Se l'istanza di creazione di Amazon EC2 non è in grado di installare o eseguire lo script di bootstrap, viene visualizzato un errore nella console di EC2 Image Builder.

Esempio di messaggio di errore:

SSM execution '7729e837-22d4-49dd-bb60-cc2c835a2625' failed for image arn: 'arn:aws:imagebuilder:us-west-2:account-ID:image/test/1.0.0/1' with 
status= 'Failed' in state = 'BUILDING' and failure message = 'Unable to bootstrap TOE'

Image Builder utilizza Automazione AWS Systems Manager per creare immagini personalizzate. L'automazione di solito non riesce al passaggio RunBuildScriptsWithLogging o RunBuildScriptsWithoutLogging.

Di seguito sono riportati i motivi comuni per gli errori degli script di bootstrap:

  • L'istanza di creazione EC2 non ha accesso ad Amazon Simple Storage Service (Amazon S3).
  • L'Amazon Machine Image (AMI) di base è rafforzata CIS e la directory /tmp predefinita è montata con noexec.

Risoluzione

Per risolvere il problema, utilizza l'ID di esecuzione dell'automazione SSM dal messaggio di errore.

  1. Apri la console di EC2 Image Builder.
  2. Scegli la pipeline di compilazione non riuscita.
  3. Annota l'ID di esecuzione dell'automazione SSM dal messaggio di errore. L'ID del messaggio di errore di esempio precedente è 7729e837-22d4-49dd-bb60-cc2c835a2625.
  4. Apri la console di AWS Systems Manager.
  5. Nel pannello di navigazione, scegli Automations (Automazioni).
  6. Seleziona l'automazione associata all'ID di esecuzione dell'automazione SSM.
  7. Scegli l'ID per il passaggio RunBuildScriptsWithoutLogging per ottenere maggiori dettagli sull'errore dello script di bootstrap.

L'istanza di creazione non ha accesso ad Amazon S3

Durante il passaggio RunBuildScriptsWithoutLogging, viene visualizzato il seguente messaggio di errore con No such file or directory (Nessun file o directory di questo tipo):

{"Status":"Failed","ResponseCode":1,"Output":"Waiting for Cloud-init to initialize ...
Cloud-init fails to initialize ... waiting another 5 minutes for the instance to stabilize
/var/lib/amazon/ssm/i-0ad513xxxxxxx/document/orchestration/bb0d8b53-994f-4c47-8297-e852a484501d/awsrunShellScript/0.awsrunShellScript/_script.sh: 
line 49: /tmp/imagebuilder/TaskOrchestratorAndExecutor/bootstrap.sh: No such file or directory
{\"failureMessage\":\"Unable to bootstrap TOE\"}

L'errore precedente indica che il file bootstrap.sh non esiste nell'istanza di creazione. Questo errore si verifica quando l'istanza di creazione si trova in una sottorete privata e non è possibile scaricare lo script di bootstrap AWS TOE.

Per risolvere questo problema, verifica se l'endpoint del gateway Amazon S3 com.amazonaws.region.s3 si trova nello stesso Cloud privato virtuale Amazon (Amazon VPC) della configurazione dell'infrastruttura della pipeline. Se l'endpoint si trova nello stesso Amazon VPC, verifica che sia associato alla tabella di instradamento corretta. L'endpoint deve essere associato alla tabella di instradamento utilizzata dalla sottorete specificata nella configurazione dell'infrastruttura.

Inoltre, verifica che il gruppo di sicurezza collegato all'istanza di compilazione consenta la connettività HTTPS (porta 443) in uscita all'indirizzo IP pubblico S3. L'istanza di creazione deve consentire la connettività HTTPS in uscita per scaricare lo script di bootstrap dal bucket Image Builder S3. Verifica l'intervallo di indirizzi IP pubblici S3 che corrisponde alla regione AWS della pipeline.

Nota: gli endpoint dell'interfaccia Amazon S3 non supportano la funzione DNS privata. Per ulteriori informazioni, consulta Accesso a un servizio AWS utilizzando un endpoint VPC dell'interfaccia.

Inoltre, assicurati che il criterio dell'endpoint consenta l'azione GetObjects dal bucket Image Builder S3 EC2ImageBuilder-toe-region-prod. La policy ha accesso completo per impostazione predefinita.

La directory /tmp è montata con noexec (applicabile solo per la creazione di AMI Linux)

Durante il passaggio RunBuildScriptsWithoutLogging, viene visualizzato il seguente messaggio di errore con Permission denied (Permesso negato):

{"Status":"Failed","ResponseCode":1,"Output":"Waiting for Cloud-init to initialize ...
/var/lib/amazon/ssm/i-0ad513xxxxxxx/document/orchestration/634699d5-3b04-4152-aab3-33d6981524cd/awsrunShellScript/0.awsrunShellScript/_script.sh:
line 49: /tmp/imagebuilder/TaskOrchestratorAndExecutor/bootstrap.sh: Permission denied
{\"failureMessage\":\"Unable to bootstrap TOE\"}

L'errore precedente indica che l'istanza di creazione non può eseguire lo script bootstrap.sh a causa di problemi con le autorizzazioni del sistema operativo. Questo errore si verifica quando la directory /tmp predefinita viene montata con l'opzione noexec. L'opzione di montaggio noexec impedisce l'esecuzione dei file binari sul file system montato.

Per verificare se la directory /tmp è montata con noexec, avvia un'istanza di test dall'AMI di base specificata nella ricetta dell'immagine.

Esegui il comando:

sudo mount | grep -E '/tmp.*noexec'

Output:

dev/xvdf on /tmp type ext4 (rw,noexec,relatime,data=ordered)

L'output precedente conferma che la directory /tmp è montata come noexec. Per risolvere questo problema, modifica la directory di lavoro nella ricetta dell'immagine o rimuovi l'opzione noexec dalla directory nell'AMI di base.

Per modificare il parametro della directory di lavoro nella ricetta dell'immagine, crea una nuova versione della ricetta dell'immagine. Quindi, modifica la pipeline per utilizzare la nuova versione. Assicurati che la nuova directory sia già presente nell'AMI e non sia configurata per il montaggio con l'opzione noexec.

Per rimuovere l'opzione noexec dalla directory /tmp:

  1. Avvia manualmente un'istanza dall'AMI di base specificata nella ricetta dell'immagine.
  2. Nel file /etc/fstab, rimuovi l'opzione noexec dalla voce associata alla directory /tmp o alla directory di lavoro.
  3. Creare una nuova AMI dall'istanza da utilizzare come AMI di base della ricetta dell'immagine.

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?