Knowledge Center Monthly Newsletter - June 2025
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post's top contributors.
Come posso risolvere i problemi relativi ai metadati di istanza in un'istanza EC2 Linux?
Non riesco a recuperare i metadati di istanza dalla mia istanza Amazon Elastic Compute Cloud (Amazon EC2) Linux.
Breve descrizione
Amazon EC2 accede localmente ai metadati di istanza all'interno dell'istanza tramite richieste HTTP all'endpoint IPv4 169.254.169.254 Io all'endpoint IPv6 [fd00:ec2::254]. Per accedere ai metadati di istanza, devi utilizzare il Servizio di metadati di istanza (IMDS). IMDSv1 non richiede un token di autenticazione. IMDSv2 richiede invece un token di sessione per una maggiore sicurezza.
Quando recuperi i metadati di istanza, potresti riscontrare i seguenti problemi:
- Errori delle richieste HTTP come timeout ed errori HTTP 400 o 404
- Errori delle richieste di token di IMDSv2
- Problemi di gestione specifici del software
- Interfaccia di rete o tabella di routing non configurata correttamente
- Configurazioni proxy o gateway NAT che bloccano l'accesso ai metadati
- (Solo IPv6) Endpoint di IMDSv6 non attivato
- Collegamenti del profilo dell'istanza AWS Identity and Access Management (AWS IAM) mancanti o obsoleti
- Firewall locali come iptables o firewalld che bloccano l'accesso a 169.254.169.254
- Volume di richieste elevato che limita la larghezza di banda della rete delle richieste di metadati
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.
Risolvi gli errori delle richieste HTTP
Completa le seguenti azioni di risoluzione in base al codice di errore HTTP che ricevi.
(Solo IMDSv1) Errore "404 - Not Found"
L'errore HTTP 404 si verifica quando inserisci un URL non valido o quando hai aggiornato il ruolo IAM dell'istanza ma non hai aggiornato il ruolo.
Per risolvere l'errore, assicurati di utilizzare l'URL corretto. Inoltre, scollega e ricollega il ruolo IAM dell'istanza.
Quindi avvia e arresta l'istanza per applicare le modifiche.
(Solo IMDSv2) Errore "400 - Bad Request"
L'errore HTTP 400 si verifica quando la richiesta PUT utilizza un token non valido o quando il software invia intestazioni errate. Ad esempio, alcuni agenti FortiGate o Matillion non memorizzano nella cache o riutilizzano i token di IMDSv2.
Per risolvere l'errore, generare un nuovo token per la richiesta PUT eseguendo questo comando:
$ TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl
Inoltre, controlla i log di sistema o dell'applicazione per i processi di lunga durata che devono aggiornare i token.
(Solo IMDSv2) Errore "401 - Unauthorized"
L'errore HTTP 401 si verifica quando la richiesta GET utilizza un token non valido.
Per risolvere l'errore, generare un nuovo token per la richiesta GET eseguendo questo comando:
$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
Inoltre, controlla i log di sistema o dell'applicazione per i processi di lunga durata che devono aggiornare i token.
Errore "403 - Forbidden"
L'errore HTTP 403 si verifica quando disattivi IMDS a livello di istanza o quando un gruppo di sicurezza, un firewall o una tabella di routing blocca l'accesso all'istanza. L'errore può verificarsi anche se devi utilizzare IMDSv2, ma il client utilizza IMDSv1.
Per risolvere il problema, verificare la configurazione di IMDS eseguendo questo comando AWS CLI describe-instances:
aws ec2 describe-instances --instance-ids your_instance_id --query 'Reservations[].Instances[].MetadataOptions'
Nota: sostituisci your_instance_id con l'ID della tua istanza.
Se HttpEndpoint è impostato su disabilitato, esegui questo comando modify-instance-metadata-options per attivare IMDS:
aws ec2 modify-instance-metadata-options --instance-id your_instance_id --http-endpoint enabled
Nota: sostituisci your_instance_id con l'ID della tua istanza.
Assicurati che la configurazione consenta l'accesso HTTP in uscita a 169.254.169.254 (per IPv4) r [fd00:ec2::254] (per IPv6) dall'istanza.
Se l'istanza utilizza un proxy, una configurazione NAT, un bilanciatore del carico o più hop di rete interni, è consigliabile configurare HttpPutResponseHopLimit su 2 o più. Configura un valore di hop sufficientemente alto da consentire alla risposta del token di attraversare i livelli della rete. Per impostazione predefinita, HttpPutResponseHopLimit consente solo 1 hop. Per aumentare il valore, esegui questo comando modify-instance-metadata-options:
aws ec2 modify-instance-metadata-options --instance-id your_instance_id --http-put-response-hop-limit 2
Nota: sostituisci your_instance_id con l'ID della tua istanza.
Verifica eventuali problemi di configurazione del proxy
Se l'istanza utilizza un proxy per accedere a Internet, devi escludere l'indirizzo IP di IMDS dal traffico proxy. In caso contrario, potresti ricevere errori HTTP 403 e 404 o timeout di connessione.
Per escludere gli indirizzi IP di IMDS dal proxy, imposta la variabile di ambiente no_proxy eseguendo questo comando:
export no_proxy='169.254.169.254,[fd00:ec2::254]'
Nota: alcune applicazioni, come Matillion, Fortigate o servizi personalizzati, potrebbero non utilizzare le impostazioni no_proxy a livello di sistema. In tal caso, configura no_proxy nell'applicazione. Per una configurazione dual-stack, assicurati di escludere entrambi gli endpoint di metadati IPv4 e IPv6.
Assicurati di aver attivato il supporto IPv6
Se utilizzi una sottorete solo IPv6, esegui questo comando modify-instance-metadata-options per attivare esplicitamente il supporto IPv6 per IMDS:
aws ec2 modify-instance-metadata-options \ --instance-id your_instance_id \ --http-protocol-ipv6 enabled
Nota: sostituisci your_instance_id con l'ID della tua istanza.
Se utilizzi endpoint cloud privato virtuale (VPC) con regole del gruppo di sicurezza rigide, assicurati che consentano all'indirizzo IP dei metadati l'accesso alla porta 80 (HTTP).
Per le applicazioni Fortigate o Matillion, verifica che il software supporti i token di sessione di IMDSv2.
Risolvi i problemi relativi a configurazioni di rete obsolete, associazioni di ruoli IAM obsolete o problemi software interni
Controlla le regole del firewall locale
Per verificare se i blocchi firewall locali utilizzano iptables per bloccare l'accesso all'endpoint di IMDS, esegui questo comando:
sudo iptables -L
Esempio di output di un endpoint bloccato:
Chain OUTPUT (policy ACCEPT) target prot opt source destination REJECT tcp -- anywhere 169.254.169.254 owner UID match 1000-10000 reject-with icmp-port-unreachable
Per verificare le regole che bloccano il traffico verso 169.254.169.254, esegui questo comando:
curl http://169.254.169.254/latest/meta-data/
Se una regola blocca il traffico, ricevi un output simile al seguente esempio:
curl: (7) Failed to connect to 169.254.169.254 port 80 after 0 ms: Connection refused
Per rimuovere la regola bloccante, esegui questo comando:
sudo iptables -D OUTPUT -p tcp -d 169.254.169.254 -m owner --uid-owner 1000-10000 -j REJECT
Se l'istanza è dual-stack, assicurati che nessuna regola del firewall IPv6 blocchi l'indirizzo IPv4 [fd00:ec2::254]. Se iptables è vuoto, ma il traffico è ancora bloccato, controlla i daemon del firewall del sistema operativo come firewalld o ufw. Inoltre, controlla gli agenti di sicurezza, come software antivirus o firewall, che potrebbero applicare regole nascoste.
Verifica se Amazon EC2 ha limitato la larghezza di banda della rete della richiesta
Amazon EC2 limita la larghezza di banda della rete a disposizione del traffico verso IMDS in base al numero di pacchetti al secondo (PPS). Ogni interfaccia di rete elastica collegata all'istanza ha una quota massima di 1.024 PPS per il traffico relativo ai metadati. Se il valore PPS supera questa quota, ricevi errori "HTTP 5xx", il recupero dei metadati non ha esito negativo o l'applicazione scade.
Per mitigare i problemi di limitazione (della larghezza di banda della rete), intraprendi le seguenti azioni:
- Implementa la logica di backoff esponenziale e ripetizione nell'applicazione quando accedi a IMDS.
- Rivolgiti al fornitore o aggiorna il software alla versione più recente per assicurarti che supporti IMDSv2.
- Quando utilizzi IMDSv2, genera un token una volta e riutilizzalo per più query di metadati durante il suo Time-to-Live (TTL).
- Effettua l'aggiornamento alla versione più recente di IMDSv2 per assicurarti che la configurazione implementi correttamente il riutilizzo dei token e il backoff esponenziale.
- Non eseguire spesso il polling dei metadati di istanza.
- Utilizza il caching dell'istanza nell'applicazione ogniqualvolta possibile.
Se il software esegue richieste di metadati senza sosta e in rapida successione, potresti riscontrare una limitazione (della larghezza di banda della rete) o errori dei metadati. Utilizza tcpdump, strace o i log di debug delle app per verificare la presenza di chiamate frequenti e ripetute a 169.254.169.254. Per monitorare gli eventi di limitazione (della larghezza di banda della rete), controlla la metrica linklocal_allowance_exceeded del driver dell'interfaccia di rete eseguendo questo comando:
ethtool -S eth0
Nota: sostituisci eth0 con il nome della tua interfaccia di rete. Nell'output, cerca per linklocal_allowance_exceeded un valore diverso da 0 per identificare la limitazione.
Esempio di output:
linklocal_allowance_exceeded: 245
L'esempio di output precedente mostra che Amazon EC2 ha limitato la larghezza di banda della rete di 245 pacchetti destinati a IMDS per un superamento della quota di PPS.
Informazioni correlate
Utilizzo di un proxy su istanze Amazon EC2
Accedere ai metadati di istanza per un'istanza EC2
Limitazione dell'accesso al servizio di metadati di istanza
Limitazione (della larghezza di banda della rete) delle query
- Argomenti
- Computazionali
- Lingua
- Italiano
