Salta al contenuto

Come posso risolvere gli errori di timeout della pipeline di creazione in Image Builder?

7 minuti di lettura
0

Desidero risolvere gli errori di timeout della pipeline di creazione che ricevo in EC2 Image Builder.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per risolvere gli errori di timeout della pipeline di creazione, intraprendi le seguenti azioni in base al momento in cui si verifica il timeout. Per informazioni sul monitoraggio dei timeout, consulta Monitora i log di Image Builder con Amazon Logs CloudWatch.

Il timeout si verifica quando la creazione verifica la disponibilità dell'agente SSM

Se il timeout si verifica quando la creazione verifica l'Agente AWS Systems Manager (Agente SSM), potresti ricevere uno dei seguenti messaggi di errore:

"Workflow Execution ID: failed with reason: ExpectationNotMet. ssm:*CommandInvocations returned terminal state Failed in workflow step LaunchBuildInstance."

"Workflow Execution ID: failed with reason: An error occurred (InvalidInstanceId) when calling the SendCommand operation: Instances [[i-1a1b1c1d1e1f1g1h1]] not in a valid state for account in workflow step LaunchBuildInstance."

"Workflow Execution ID: failed with reason: ExpectationNotMet. ec2:DescribeInstanceStatus did not meet terminal states: [['passed']] after 100 attempts. Reason: Timeout. in workflow step LaunchBuildInstance."

Per risolverli, intraprendi le seguenti azioni.

Verifica che l'istanza Amazon EC2 abbia le autorizzazioni IAM richieste

Assicurati che l'istanza Amazon Elastic Compute Cloud (Amazon EC2) abbia le autorizzazioni AWS Identity and Access Management (AWS IAM) richieste. Collega la policy gestita AmazonSSMManagedInstanceCore al ruolo IAM che utilizzi per Image Builder. Per identificare il ruolo che utilizzi per Image Builder, controlla i dettagli di configurazione dell'infrastruttura. Inoltre, assicurati che il ruolo AWSServiceRoleForImageBuilder possa utilizzare la chiave del Servizio AWS di gestione delle chiavi (AWS KMS) specificata nel dispositivo a blocchi della ricetta di immagine.

Assicurati che l'Agente SSM possa raggiungere gli endpoint

Controlla le seguenti impostazioni in base alla configurazione:

  • Se utilizzi una sottorete pubblica con un gateway Internet, configura la sottorete per assegnare automaticamente un indirizzo IPv4 pubblico.
  • Se utilizzi una sottorete privata con un gateway NAT, configura il gateway NAT per utilizzare una sottorete pubblica.
  • Se utilizzi una sottorete privata con endpoint Amazon Virtual Private Cloud (Amazon VPC), configura gli endpoint privati per AWS Systems Manager.
  • Verifica che il gruppo di sicurezza e le liste di controllo degli accessi alla rete (ACL) consentano le connessioni in entrata sulle porte effimere 1024-65535 e le connessioni in uscita sulla porta 443.
  • Se utilizzi una sottorete privata con endpoint di AWS PrivateLink, verifica che il gruppo di sicurezza dell'endpoint Amazon VPC consenta le connessioni in entrata sulla porta 443.
    Nota: per consentire le connessioni in entrata, utilizza la sottorete o l'indirizzo CIDR di Amazon VPC.

Per ulteriori procedure di risoluzione dei problemi, consulta Perché la pipeline di creazione immagini restituisce l'errore "Step timed out while step is verifying the Systems Manager Agent availability on the target instance(s)" in Image Builder?

Il timeout si verifica quando la creazione scarica AWS CLI

Se l'Amazon Machine Image (AMI) dell'istanza EC2 non dispone di AWS CLI, lo script di bootstrap installa AWS CLI tramite Internet. Tuttavia, se crei su una sottorete privata che non consente la connettività Internet, la creazione scadrà nella fase ApplyBuildComponents. Per la creazione di un container, il timeout si verifica nella fase BootstrapBuildInstance.

Per risolvere questo problema di timeout, consenti la connettività Internet sulla sottorete tramite un gateway NAT o un gateway Internet. Oppure crea un'AMI personalizzata dove installare AWS CLI.

Il timeout si verifica nella fase LaunchBuildInstance

Devi utilizzare nomi univoci per i dispositivi root nell'istanza di creazione. Di conseguenza, non è consigliabile denominare il dispositivo root /dev/xvda o /dev/sda1. Se il nome del dispositivo root risulta duplicato quando utilizzi l'API CreateImageRecipe, ricevi un timeout con il seguente messaggio di errore:

"Workflow Execution ID: failed with reason: ExpectationNotMet. ec2:DescribeInstanceStatus did not meet terminal states: [['passed']] after 100 attempts. Reason: Timeout. in workflow step LaunchBuildInstance."

Nota: se utilizzi un'istanza basata su AWS Nitro System o un tipo di istanza Xen, il nome del dispositivo può essere duplicato.

Per verificare il nome del dispositivo dell'AMI di origine, esegui questo comando AWS CLI describe-images:

aws ec2 describe-images \
    --region exampleregion \
    --image-ids exampleami

Nota: sostituisci exampleregion con la tua Regione AWS e exampleami con l'ID dell'AMI di origine.

Nell'output, controlla il valore di RootDeviceName. Assicurati di utilizzare lo stesso nome del dispositivo nella ricetta di Image Builder.

Il timeout si verifica quando la creazione recupera i componenti di Image Builder

Se crei su una sottorete privata e Image Builder non riesce a connettersi ai componenti da scaricare, ricevi il seguente messaggio di errore:

"failed with reason: failed to download the EC2 Image Builder Component, operation error imagebuilder: GetComponent, exceeded maximum number of attempts, 3, dial tcp i/o timeout."

Per risolvere questo errore, assicurati che i gruppi di sicurezza e la risoluzione DNS consentano la comunicazione sulle porte richieste. Oppure crea un endpoint Amazon VPC di interfaccia per lo stesso VPC e la stessa sottorete che utilizzi nella configurazione dell'infrastruttura di Image Builder. Inoltre, verifica che la configurazione sia conforme ai requisiti di Image Builder.

Il timeout si verifica quando la creazione recupera la mirrorlist

Amazon Linux archivia la **mirrorlist ** in un bucket Amazon Simple Storage Service (Amazon S3). Se crei su una sottorete privata che non ha accesso ad Amazon S3, ricevi il seguente messaggio di errore di timeout:

"Could not retrieve mirrorlist; error was 12: Timeout was reached."

Per risolvere il problema, crea un endpoint Amazon VPC gateway per Amazon S3. Per impostazione predefinita, Amazon VPC aggiunge l'elenco dei prefissi Amazon S3 alla tabella di routing quando crei un endpoint. Tuttavia, è consigliabile verificare che l'elenco dei prefissi sia effettivamente presente nella tabella di routing.

Se crei su un'AMI che non è Amazon Linux, la mirrorlist non viene archiviata in Amazon S3. In questo caso, potrebbe verificarsi un timeout quando la creazione recupera il repository/mirrorlist. Assicurati di consentire l'indirizzo o l'URL del repository nel firewall o nel proxy di rete. Se il repository/mirrorlist richiede Internet, consenti la connettività Internet sulla sottorete tramite un gateway NAT.

Il timeout si verifica nella fase ApplyBuildComponents

Se si verifica un timeout di creazione nella fase ApplyBuildComponents, ricevi il seguente messaggio di errore:

"Workflow Execution ID: failed with reason: ExpectationNotMet. ssm:ListCommandInvocations did not meet terminal states: [['Success']] after 1440 attempts. Reason: Timeout. in workflow step ApplyBuildComponents."

Per risolvere il problema, analizza i log inviati da Image Builder al bucket Amazon S3 dell'infrastruttura. Per ulteriori informazioni, consulta la sezione Rivedi i registri di runtime del flusso di lavoro in Risolvi i problemi relativi alle build della pipeline.

Inoltre, analizza i log dei componenti dell'istanza utilizzata per creare o testare una nuova immagine. Prima di controllare i log, disattiva Termina l'istanza in caso di errore. Per accedere a questa funzionalità, completa i seguenti passaggi:

  1. Apri la console Image Builder.
  2. Scegli Modifica infrastruttura.
  3. Scegli Modifica, quindi seleziona Specify settings to troubleshoot issues with building your image (Specifica le impostazioni per risolvere i problemi relativi alla creazione dell'immagine).
  4. Scegli Impostazioni dell'istanza, quindi deseleziona Termina l'istanza in caso di errore.

Nota: il file di log detailedoutput.json descrive il motivo per cui il componente ha generato l'errore o è scaduto. Il file application.log fornisce informazioni sulla risoluzione dei problemi a livello di debug.

Infine, controlla il valore del parametro timeoutSeconds nello schema YAML del documento. Il valore predefinito è 7200. Per aumentare il tempo prima del timeout di Image Builder, aggiorna il valore nel documento YAML. Un valore di -1 è infinito.

AWS UFFICIALEAggiornata 10 mesi fa