¿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).
Breve descripción
Los metadatos de instancia contienen información sobre la instancia de EC2, como el identificador de la instancia, las direcciones IP públicas y privadas, los grupos de seguridad, los roles de AWS Identity and Access Management (IAM), etc. Los metadatos de instancia se exponen a la instancia mediante solicitudes HTTP a 169.254.169.254.
Es posible que se produzcan los siguientes problemas al recuperar los metadatos de instancia del Servicio de metadatos de instancias (IMDS):
- Errores de solicitud HTTP
- Configuración del proxy
- Reglas de firewall local
- Limitación de solicitudes
Resolución
Errores de solicitud HTTP
Al realizar una solicitud HTTP para recuperar los metadatos de instancia, es posible que se devuelvan los siguientes códigos de error HTTP:
HTTP 404 - No encontrado
El error HTTP 404 se aplica a IMDS v1. Este error se produce cuando el recurso solicitado no está disponible. Compruebe que está utilizando la URL correcta.
400 - Bad Request
El error 400 - Bad Request se aplica a IMDS v2. Este error se produce si la solicitud PUT no es válida.
401 -Autorización denegada
El error 401 - Unauthorized se produce si la solicitud GET utiliza un token que no es válido. Si esto ocurre, genere un nuevo token.
403 - No permitido
El error 403 - No permitido se produce si la solicitud no está permitida o si el IMDS está desactivado. Ejecute el siguiente comando para comprobar el estado del IMDS. En el siguiente comando de ejemplo, sustituya your_instance_ID por el valor correcto de su caso de uso.
$ aws ec2 describe-instances -instance-ids -query 'Reservations[].Instances[].MetadataOptions'
A continuación se muestra un ejemplo de resultado del comando anterior:
[ { "State": "applied", "HttpTokens": "optional", "HttpPutResponseHopLimit": 1, "HttpEndpoint": "disabled", "HttpProtocolIpv6": "disabled", "InstanceMetadataTags": "disabled" } ]
Si la opción de comando muestra que HttpEndpoint está desactivado, ejecute el siguiente comando:
aws ec2 modify-instance-metadata-options \ --instance-id \ --http-endpoint enabled
Configuración del proxy
Si utiliza un proxy para acceder a Internet, debe excluir la dirección IP del IMDS (169.254.169.254). Si no se excluye la dirección IP del IMDS, es posible que no pueda recuperar los metadatos de instancia.
Para excluir la dirección IP del IMDS del uso del proxy, defina una variable de entorno NO_PROXY con la siguiente dirección:
export NO_PROXY=169.254.169.254
Reglas de firewall local
Los firewalls de la instancia pueden impedir que algunos o todos los procesos accedan al IMDS.
Asegúrese de que los firewalls del sistema operativo de la instancia no bloqueen el tráfico de salida a la dirección IP de los metadatos de instancia. Los firewalls incluyen iptables, UFW (firewall sencillo), etc.
Use el siguiente comando para comprobar las reglas de firewall de iptables
sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination 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
Si el resultado de la lista de iptables muestra un rechazo de recuperación de metadatos, es posible que reciba el siguiente error:
$ curl http://169.254.169.254/latest/meta-data/ curl: (7) Failed to connect to 169.254.169.254 port 80 after 0 ms: Connection refused
Para resolver este error, ejecute el siguiente comando para eliminar la regla:
$ sudo iptables -D OUTPUT -proto tcp -destination 169.254.169.254 -match owner -uid-owner 1000-10000 -jump REJECT
Limitación de solicitudes
El tráfico al IMDS se limita en función del número de paquetes por segundo. Además, hay un límite de 1024 PPS para cada interfaz de red elástica conectada a la instancia. Si su tasa de PPS al IMDS supera los 1024 PPS, la solicitud se limita.
Si se produce una limitación, vuelva a intentar su solicitud con una estrategia de retroceso exponencial.
Para ver la frecuencia con la que las instancias de EC2 alcanzan los límites de limitación, compruebe la métrica linklocal_allowance_exceeded en el controlador de interfaz de red elástica. Esta métrica indica que el número de paquetes formados debido al tráfico a los servicios proxy locales supera el máximo de la interfaz de red.
Ejecute el siguiente comando para ver la métrica linklocal_allowance_exceeded:
$ ethtool -S <Network-Interface> eg: $ ethtool -S eth0
Información relacionada
Uso de un proxy en instancias Amazon EC2
Contenido relevante
- OFICIAL DE AWSActualizada hace 6 meses
- OFICIAL DE AWSActualizada hace 9 meses
- ¿Por qué mi instancia de Windows de Amazon EC2 genera el error «Esperando el servicio de metadatos»?OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 meses