Perché la pipeline di creazione immagini non riesce con l'errore "Passaggio scaduto durante la verifica della disponibilità dell'agente Systems Manager sulle istanze di destinazione" in Image Builder?

Ultimo aggiornamento: 22/06/2022

Il mio processo di creazione immagini scade in EC2 Image Builder. Quindi, restituisce l'errore "messaggio di errore = 'Passaggio scaduto durante la verifica della disponibilità dell'agente Systems Manager sulle istanze di destinazione'". Come posso risolvere questo problema?

Breve descrizione

EC2 Image Builder utilizza Automazione AWS Systems Manager per creare immagini personalizzate. Assicurati che l'istanza di Amazon Elastic Compute Cloud (Amazon EC2) utilizzata per creare immagini ed eseguire test abbia accesso al servizio AWS Systems Manager.

Il messaggio di errore, messaggio di errore = "Passaggio scaduto durante la verifica della disponibilità dell'agente SSM sulle istanze di destinazione", può verificarsi per i seguenti motivi:

  • L'istanza di build o test non riesce ad accedere agli endpoint di Systems Manager. Per risolvere questo problema, controllare le regole in entrata e in uscita per il gruppo di sicurezza e la lista di controllo degli accessi alla rete (ACL di rete).
  • Il profilo dell'istanza non dispone delle autorizzazioni richieste. Per risolvere questo problema, verifica che al profilo dell'istanza siano collegate le policy corrette.
  • L'istanza non può raggiungere Instance Metadata Service (IMDS). Per risolvere questo problema, verifica che l'istanza possa raggiungere IMDS.
  • Agente AWS Systems Manager (agente SSM) non è installato nell'immagine di base.

Risoluzione

Controlla le regole in uscita e in entrata per il gruppo di sicurezza e l'ACL di rete

Se l'istanza di build o di test non è in grado di accedere agli endpoint di Systems Manager, verifica quanto segue:

  • Il gruppo di sicurezza deve essere aperto in uscita per la porta 443.
  • L'ACL di rete deve avere un'apertura in entrata per le porte temporanee (1024-65535) e un'apertura in uscita per la porta 443.

Per le build di sottoreti pubbliche:

  • La sottorete deve avere l'opzione Abilita assegnazione automatica dell'indirizzo IPv4 pubblico abilitata.
  • La tabella di instradamento deve avere un gateway Internet collegato.

Per le build di sottoreti private:

  • La tabella di instradamento deve avere un gateway o un'istanza NAT oppure endpoint AWS PrivateLink su Systems Manager (ssm, ssmmessages, ec2messages) e Image Builder. Se la registrazione è abilitata, allora la tabella di instradamento deve avere anche endpoint su Amazon Simple Storage Service (Amazon S3) o Amazon CloudWatch.
  • Il gruppo di sicurezza per l'endpoint del cloud privato virtuale Amazon (Amazon VPC) deve consentire il traffico in entrata sulla porta 443 verso il CIDR VPC.

Verifica che il profilo dell'istanza abbia le policy corrette

Il profilo dell'istanza è il ruolo AWS Identity and Access Management (IAM) definito nella configurazione dell'infrastruttura. Se non dispone delle autorizzazioni richieste, la compilazione non riesce. Il profilo dell'istanza deve avere le seguenti policy gestite collegate per avere l'autorizzazione a creare immagini:

  • EC2InstanceProfileForImageBuilder
  • EC2InstanceProfileForImageBuilderECRContainerBuilds (per le immagini Docker)
  • AmazonSSMManagedInstanceCore

Puoi inoltre creare policy personalizzate con autorizzazioni simili alle policy gestite precedenti.

Nota: controlla la policy di attendibilità del ruolo per assicurarti che ec2.amazonaws.com sia autorizzato ad assumere il ruolo.

Verifica che l'istanza possa raggiungere IMDS

IMDS viene utilizzato per accedere ai metadati da un'istanza in esecuzione. Se la tua istanza non riesce a raggiungere IMDS, la compilazione non riesce. Assicurati che il firewall del tuo sistema operativo (SO) consenta il traffico 169.254.169.254 sulla porta 80 in modo che l'istanza possa raggiungere IMDS.

Utilizza il seguente comando per testare la connettività:

$ telnet 169.254.169.254 80

Se utilizzi un proxy, configura l'agente SSM in modo che funzioni con un proxy. Per Linux, consulta Configurazione dell'agente SSM per l'utilizzo di un proxy (Linux). Per Microsoft Windows, consulta Configurazione dell'agente SSM per l'utilizzo di un proxy per le istanze Windows Server.

Verifica che l'agente SSM sia installato sull'immagine di base

Se l'immagine di base non ha un agente SSM preinstallato, installalo tramite i dati utente nella fase di build. L'agente SSM deve essere installato per aggiungere dati utente personalizzati alla ricetta dell'immagine.

Per verificare se l'agente SSM è preinstallato sull'immagine di base, avvia un'istanza Amazon EC2 utilizzando l'immagine di base. Quindi, emetti il seguente comando per il sistema operativo della tua istanza:

Amazon Linux

$ sudo systemctl status amazon-ssm-agent

Amazon Linux 2

$ sudo systemctl status amazon-ssm-agent

macOS

$ Check for an agent log file at /var/log/amazon/ssm/amazon-ssm-agent.log

SUSE Linux Enterprise Server

$ sudo systemctl status amazon-ssm-agent

Ubuntu Server 16.04 (32 bit)

$ sudo status amazon-ssm-agent

Istanze a 64 bit di Ubuntu Server 16.04 (deb)

$ sudo systemctl status amazon-ssm-agent

Ubuntu Server 16.04, 18.04 e 20.04 LTS e 20.10 STR a 64 bit (Snap)

$ sudo systemctl status snap.amazon-ssm-agent.amazon-ssm-agent.service

Windows Server

Esegui in PowerShell:

Get-Service AmazonSSMAgent

Per maggiori informazioni, consulta Amazon Machine Image (AMI) con agente SSM preinstallato.

Disabilita l'opzione "Termina istanza in caso di errore"

Se le soluzioni precedenti non risolvono il problema, allora:

1.    Apri la console di EC2 Image Builder.

2.    Disabilita l'opzione Termina l'istanza in caso di errore nella configurazione dell'infrastruttura, quindi esegui nuovamente la pipeline.

3.    Connettiti all'istanza ed emetti i seguenti comandi per verificare la connessione agli endpoint di Systems Manager:

Istanza Linux

$ curl -v https://ssm.region.amazonaws.com
$ curl -v https://ec2messages.region.amazonaws.com
$ curl -v https://ssmmessages.region.amazonaws.com

Istanza Windows

Test-NetConnection ssm.region.amazonaws.com -port 443
Test-NetConnection ec2messages.region.amazonaws.com -port 443
Test-NetConnection ssmmessages.region.amazonaws.com -port 443

Nota: sostituisci il campo regione con la tua regione AWS.

4.    Utilizza i seguenti percorsi per verificare la presenza di errori nei registri SSM:

Linux

  • /var/log/amazon/ssm/amazon-ssm-agent.log
  • /var/log/amazon/ssm/errors.log

Windows

  • %PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log
  • %PROGRAMDATA%\Amazon\SSM\Logs\errors.log

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?