¿Cómo puedo solucionar problemas con los metadatos de instancia en mi instancia de Linux de EC2?

4 minutos de lectura
0

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

Ejemplos de recuperación de metadatos de instancia

Limitación del acceso a IMDS

Limitación de consultas

Métricas para el controlador de ENA

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 8 meses