Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
¿Cómo puedo solucionar problemas con los metadatos de instancia en mi instancia de Linux de EC2?
No puedo recuperar los metadatos de instancia de mi instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2).
Descripción corta
Amazon EC2 accede localmente a los metadatos de la instancia dentro de la instancia a través de solicitudes HTTP al punto de enlace IPv4 169.254.169.254 o al punto de enlace IPv6 [fd00:ec2::254]. Para acceder a los metadatos de la instancia, debes usar el servicio de metadatos de instancias (IMDS). IMDSv1 no requiere un token de autenticación, pero IMDSv2 requiere un token de sesión para mejorar la seguridad.
Al recuperar los metadatos de la instancia, es posible que surjan los siguientes problemas:
- Errores de solicitud HTTP, como tiempos de espera y errores HTTP 400 o 404
- Fallos en la solicitud de token de IMDSv2
- Problemas de gestión específicos del software
- Interfaz de red o tabla de enrutamiento mal configuradas
- Configuraciones de puerta de enlace de NAT o proxy que bloquean el acceso a los metadatos
- (Solo IPv6) Un punto de enlace de IMDSv6 que no está activado
- Faltan conexiones de perfil de instancia de AWS Identity and Access Management (IAM) o están obsoletas
- Firewalls locales, como iptables o firewalld, que bloquean el acceso a 169.254.169.254
- Alto volumen de solicitudes que provoca una limitación de las solicitudes de metadatos
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Resolución de errores de solicitud HTTP
Realiza las siguientes acciones de solución de problemas en función del código de error HTTP que recibas.
(Solo IMDSv1) Error «404 - Not Found»
El error HTTP 404 se produce cuando escribes una URL que no es válida o cuando actualizas el rol de IAM de la instancia, pero no lo actualizas.
Para resolver este error, comprueba que estás utilizando la URL correcta. Además, desconecta y vuelve a adjuntar el rol de IAM de tu instancia.
A continuación, inicia y detén la instancia para aplicar los cambios.
(Solo IMDSv2) Error «400 - Bad Request»
El error HTTP 400 se produce cuando la solicitud PUT usa un token que no es válido o cuando el software envía encabezados incorrectos. Por ejemplo, algunos agentes de FortiGate o Matillion no almacenan en caché ni reutilizan los tokens de IMDSv2.
Para resolver este error, ejecuta el siguiente comando para generar un nuevo token para tu solicitud PUT:
$ TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl
Además, consulta los registros del sistema o de la aplicación para ver si hay procesos de ejecución prolongada que necesitan actualizar sus tokens.
(Solo IMDSv2) Error «401 - Unauthorized»
El error HTTP 401 se produce cuando la solicitud GET usa un token que no es válido.
Para resolver este error, ejecuta el siguiente comando para generar un nuevo token para tu solicitud GET:
$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
Además, consulta los registros del sistema o de la aplicación para ver si hay procesos de ejecución prolongada que necesitan actualizar sus tokens.
Error «403 - Forbidden»
El error HTTP 403 se produce cuando se desactiva el IMDS a nivel de instancia o cuando un grupo de seguridad, un firewall o una tabla de enrutamiento bloquea el acceso a la instancia. El error también puede producirse si debes usar IMDSv2, pero el cliente usa IMDSv1.
Para resolver este problema, ejecuta el siguiente comando describe-instances de la AWS CLI para comprobar la configuración del IMDS:
aws ec2 describe-instances --instance-ids your_instance_id --query 'Reservations[].Instances[].MetadataOptions'
Nota: Sustituye your_instance_id por el ID de tu instancia.
Si HttpEndpoint está establecido en desactivado, ejecuta el siguiente comando modify-instance-metadata-options para activar el IMDS:
aws ec2 modify-instance-metadata-options --instance-id your_instance_id --http-endpoint enabled
Nota: Sustituye your_instance_id por el ID de tu instancia.
Asegúrate de que tu configuración permita el acceso HTTP saliente a 169.254.169.254 (para IPv4) o [fd00:ec2::254] (para IPv6) desde la instancia.
Si tu instancia usa un proxy, una configuración de NAT, un equilibrador de carga o varios saltos de red internos, se recomienda configurar HttpPutResponseHopLimit en 2 o más. Configura un valor de salto que sea lo suficientemente alto como para permitir que la respuesta del token atraviese las capas de red. De forma predeterminada, HttpPutResponseHopLimit solo permite 1 salto. Para aumentar este valor, ejecuta el siguiente comando modify-instance-metadata-options:
aws ec2 modify-instance-metadata-options --instance-id your_instance_id --http-put-response-hop-limit 2
Nota: Sustituye your_instance_id por el ID de tu instancia.
Comprobar si hay problemas de configuración del proxy
Si tu instancia usa un proxy para acceder a Internet, debes excluir la dirección IP del IMDS del tráfico de proxy. Si no lo haces, es posible que recibas errores HTTP 403 y 404 o tiempos de espera de conexión.
Para excluir las direcciones IP del IMDS del proxy, ejecuta el siguiente comando para configurar la variable de entorno no_proxy:
export no_proxy='169.254.169.254,[fd00:ec2::254]'
Nota: Es posible que algunas aplicaciones, como Matillion, Fortigate o los servicios personalizados, no utilicen la configuración no_proxy a nivel del sistema. En este escenario, configura no_proxy en la aplicación. Para una configuración de pila doble, asegúrate de excluir los puntos de enlace de metadatos IPv4 e IPv6.
Asegurarse de haber activado la compatibilidad con IPv6
Si usas una subred solo para IPv6, ejecuta el siguiente comando modify-instance-metadata-options para activar explícitamente la compatibilidad con IPv6 para IMDS:
aws ec2 modify-instance-metadata-options \ --instance-id your_instance_id \ --http-protocol-ipv6 enabled
Nota: Sustituye your_instance_id por el ID de tu instancia.
Si usas puntos de enlace de nube virtual privada (VPC) con reglas de grupo de seguridad estrictas, asegúrate de que permitan el acceso del puerto 80 (HTTP) a la dirección IP de los metadatos.
Para las aplicaciones Fortigate o Matillion, confirma que el software admite los tokens de sesión de IMDSv2.
Solución de problemas de configuración de red obsoleta, asociaciones de roles de IAM obsoletas o problemas de software interno
Comprobación de las reglas del firewall local
Para comprobar si los bloques de firewall locales utilizan iptables para bloquear el acceso al punto de enlace del IMDS, ejecuta el siguiente comando:
sudo iptables -L
Ejemplo de salida de un punto de enlace bloqueado:
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
Para comprobar las reglas que bloquean el tráfico a 169.254.169.254, ejecuta el siguiente comando:
curl http://169.254.169.254/latest/meta-data/
Si una regla bloquea el tráfico, recibirás un resultado similar al siguiente ejemplo:
curl: (7) Failed to connect to 169.254.169.254 port 80 after 0 ms: Connection refused
Para eliminar la regla de bloqueo, ejecuta el siguiente comando:
sudo iptables -D OUTPUT -p tcp -d 169.254.169.254 -m owner --uid-owner 1000-10000 -j REJECT
Si tu instancia es de pila doble, asegúrate de que ninguna regla de firewall IPv6 bloquee la dirección IPv4 [fd00:ec2::254]. Si tus iptables están vacías, pero el tráfico sigue bloqueado, comprueba los daemons de firewall del sistema operativo (OS), como firewalld o ufw. Además, comprueba los agentes de seguridad, como el software antivirus o de firewall, que podrían aplicar reglas ocultas.
Comprobar si Amazon EC2 limitó la solicitud
Amazon EC2 limita el tráfico al IMDS en función del número de paquetes por segundo (PPS). Cada interfaz de red elástica conectada a la instancia tiene una cuota máxima de 1024 PPS para el tráfico relacionado con los metadatos. Si su tasa de PPS supera esta cuota, recibirás errores de tipo «HTTP 5xx», se producirá un error en la recuperación de los metadatos o se agotará el tiempo de espera de la aplicación.
Para mitigar los problemas de limitación, toma las siguientes medidas:
- Implementa la lógica de reintento y retroceso exponencial en tu aplicación cuando accedas al IMDS.
- Consúltalo con tu proveedor o actualiza el software a la versión más reciente para asegurarte de que es compatible con IMDSv2.
- Cuando utilices IMDSv2, genera un token una vez y reutilízalo para varias consultas de metadatos durante su tiempo de vida (TTL).
- Actualiza a la última versión de IMDSv2 para asegurarte de que tu configuración implementa correctamente la reutilización de los tokens y el retroceso exponencial.
- No sondees con frecuencia los metadatos de las instancias.
- Usa el almacenamiento en caché de instancias en tu aplicación siempre que sea posible.
Si tu software inunda las solicitudes de metadatos en un bucle cerrado sin demora, es posible que experimentes errores de limitación o de metadatos. Usa los registros de depuración de tcpdump, strace o aplicación para comprobar si hay llamadas que se repiten con frecuencia al 169.254.169.254. Para supervisar los eventos de limitación, ejecuta el siguiente comando para comprobar si el controlador de la interfaz de red tiene la métrica linklocal_allowance_exceeded:
ethtool -S eth0
Nota: Sustituye eth0 por el nombre de tu interfaz de red. En la salida, comprueba linklocal_allowance_exceeded para ver un valor que no sea 0 para identificar la limitación.
Resultado de ejemplo:
linklocal_allowance_exceeded: 245
El resultado del ejemplo anterior muestra que Amazon EC2 limitó 245 paquetes a IMDS debido a que se superó la cuota de PPS.
Información relacionada
Uso de un proxy en instancias de Amazon EC2
Acceso a los metadatos de la instancia de una instancia de EC2
Limitación del acceso al servicio de metadatos de instancias
- Temas
- Compute
- Etiquetas
- LinuxAmazon EC2
- Idioma
- Español

Contenido relevante
- preguntada hace 3 meses
- preguntada hace 10 meses
- preguntada hace 9 meses
- preguntada hace 6 meses