Come posso risolvere i problemi relativi all’inclusione di metadati in un'istanza EC2 in CloudFormation?

3 minuti di lettura
0

In AWS CloudFormation, ho usato AWS::CloudFormation::Init per includere metadati in un'istanza di Amazon Elastic Cloud Compute (Amazon EC2). Tuttavia, nell’istanza non vedo le modifiche.

Risoluzione

Prerequisiti: imposta l'opzione Ripristino dello stato precedente in caso di esito negativo per il tuo stack CloudFormation su No.

Se imposti Ripristino dello stato precedente in caso di esito negativo su No e non riesci ancora a includere i metadati nell'istanza EC2, esegui le seguenti azioni.

Nota: i seguenti passaggi di risoluzione riguardano gli stack di CloudFormation creati con un'istanza Linux.

Verifica che lo script di supporto cfn-init sia installato

Per verificare di aver installato cfn-init nell'istanza configurata per inviare segnali alle risorse di CloudFormation, completa i seguenti passaggi:

  1. Utilizza SSH per connetterti all'istanza.
  2. Verifica che nella tua directory siano installati cfn-init o il pacchetto aws-cfn-bootstrap.
    Per verificare la presenza di cfn-init, esegui il comando seguente:
    sudo find / -name cfn-init/opt/aws/bin/cfn-init
    /opt/aws/apitools/cfn-init
    /opt/aws/apitools/cfn-init-1.4-34.24.amzn1/bin/cfn-init
    /var/lib/cfn-init
    Per verificare la presenza del pacchetto aws-cfn-bootstrap esegui il comando seguente:
    sudo rpm -q aws-cfn-bootstrapaws-cfn-bootstrap-1.4-34.24.amzn1.noarch
    Nota: il comando precedente funziona solo sulle distribuzioni che utilizzano RPM Package Manager.

Per impostazione predefinita, gli script di supporto di CloudFormation sono installati su Amazon Linux Amazon Machine Image (AMI).

Verifica che l'istanza sia connessa a Internet

Se l'istanza si trova in un Amazon Virtual Private Cloud (Amazon VPC), può connettersi a Internet nei seguenti modi:

  • Dispositivo NAT in una sottorete privata
  • Gateway Internet in una sottorete pubblica

Per testare la connessione a Internet dell'istanza, apri una pagina Web pubblica come la home page di AWS. Quindi, esegui un comando curl sull'istanza. Esempio:

curl -I https://aws.amazon.com

se l'istanza è connessa a Internet, il comando restituisce un codice di stato HTTP 200.

Se utilizzi un endpoint VPC di interfaccia, l'endpoint deve trovarsi nella stessa regione AWS dell'istanza. Inoltre, il gruppo di sicurezza collegato all'endpoint di interfaccia deve consentire le connessioni in ingresso sulla porta 443 dalla sottorete privata di Amazon VPC.

Cerca eventuali errori nei log di cloud-init o cfn-init

Per cercare errori di sintassi o valori errati nei log di cloud-init o di cfn-init, completa i seguenti passaggi:

  1. Usa SSH per connetterti alla tua istanza.
  2. Per trovare messaggi di errore dettagliati, cerca le parole chiave error o failure nei seguenti log:
    /var/log/cloud-init-output.log
    /var/log/cloud-init.log
    /var/log/cfn-init.log
    /var/log/cfn-init-cmd.log
    Per trovare tutte le istanze delle parole error o failure nei file /var/log/cfn or /var/log/cloud-init esegui il seguente comando:
    grep -ni 'error\|failure' $(sudo find /var/log -name cfn-init\* -or -name cloud-init\*)
    Nota: il comando precedente restituisce il nome del file, il numero di riga e il messaggio di errore.
  3. Utilizza il messaggio di errore dettagliato per correggere gli errori, quindi aggiorna lo stack.

Se cfn-init.log non esiste, il modello di CloudFormation non ha eseguito cfn-init.

Per verificare di aver configurato la proprietà UserData per eseguire cfn-init, completa i passaggi seguenti:

  1. In un editor di codice, apri il modello di CloudFormation per il tuo stack.
  2. In UserData, verifica la presenza di errori, ad esempio problemi di sintassi, spazi mancanti, ortografia sbagliata e altri errori di battitura.
  3. Verifica che i valori per le proprietà dello stack, della risorsa e della regione siano corretti.
  4. Per la funzione intrinseca Fn::Join della proprietà UserData, utilizza**-v** per eseguire cfn-init in modalità dettagliata. Per esempi di output, consulta Example.

Informazioni correlate

Considerations for CloudFormation VPC endpoints

AWS::CloudFormation::Init

Come faccio a risolvere l'errore "Failed to receive X resource signal(s) within the specified duration" in AWS CloudFormation?

AWS UFFICIALE
AWS UFFICIALEAggiornata 7 mesi fa