Como posso solucionar problemas de metadados da instância na minha instância Linux do EC2?

4 minuto de leitura
0

Não consigo recuperar metadados de instância da minha instância Linux do Amazon Elastic Compute Cloud (Amazon EC2).

Breve descrição

Os metadados da instância são informações sobre a instância do EC2, como ID da instância, endereços IP públicos e privados, grupos de segurança, funções do AWS Identity and Access Management (IAM) e assim por diante. Os metadados da instância são expostos à instância por meio de solicitações HTTP para 169.254.169.254.

Você pode encontrar os seguintes problemas ao recuperar metadados da instância do Serviço de Metadados da Instância (IMDS):

  • Erros de solicitação HTTP
  • Configuração de proxy
  • Regras de firewall locais
  • Controle de utilização de solicitações

Resolução

Erros de solicitação HTTP

Ao fazer uma solicitação HTTP para recuperar os metadados da instância, os seguintes códigos de erro HTTP podem ser retornados:

HTTP 404 - Não encontrado

O erro HTTP 404 se aplica ao IMDS v1. Esse erro ocorre quando o recurso solicitado não está disponível. Verifique se você está usando o URL correto.

400 - Pedido incorreto

O erro 400 - Solicitação inválida se aplica ao IMDS v2. Esse erro ocorre se a solicitação PUT não for válida.

401 - Não autorizado

O erro 401 - Não autorizado ocorre se a ** solicitação ** GET usa um token que não é válido. Se isso ocorrer, gere um novo token.

403 - Proibido

O erro 403 - Proibido ocorre se a solicitação não for permitida ou se o IMDS estiver desativado. Execute o comando a seguir para verificar o status do IMDS. No comando de exemplo a seguir, substitua sua\ _instance\ _ID pelo valor correto para seu caso de uso.

$ aws ec2 describe-instances -instance-ids  -query 'Reservations[].Instances[].MetadataOptions'

Veja a seguir um exemplo de saída do comando anterior:

[
  {
    "State": "applied",
    "HttpTokens": "optional",
    "HttpPutResponseHopLimit": 1,
    "HttpEndpoint": "disabled",
    "HttpProtocolIpv6": "disabled",
    "InstanceMetadataTags": "disabled"
  }
]

Se a opção de comando mostrar que o HttpEndpoint está desativado, execute o seguinte comando:

aws ec2 modify-instance-metadata-options \
    --instance-id  \
    --http-endpoint enabled

Configuração de proxy

Se você estiver usando um proxy para acessar a internet, deverá excluir o endereço IP do IMDS (169.254.169.254). Se o endereço IP do IMDS não for excluído, talvez você não consiga recuperar os metadados da instância.

Para excluir o endereço IP IMDS do uso do proxy, defina uma variável de ambiente NO\ _PROXY com o seguinte endereço:

export NO_PROXY=169.254.169.254

Regras de firewall locais

Os firewalls na instância podem impedir que alguns ou todos os processos acessem o IMDS.

Verifique se os firewalls no sistema operacional da instância não estejam bloqueando o tráfego de saída para o endereço IP dos metadados da instância. Os firewalls incluem iptables, UFW (firewall descomplicado) e assim por diante.

Use o comando a seguir para verificar as regras de firewall para 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

Se o resultado da listagem do iptables mostrar uma rejeição da recuperação de metadados, você poderá receber o seguinte erro:

$ 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 esse erro, execute o seguinte comando para excluir a regra:

$ sudo iptables -D OUTPUT -proto tcp -destination 169.254.169.254 -match owner -uid-owner 1000-10000 -jump REJECT

Controle de utilização de solicitações

O tráfego para o IMDS é limitado com base no número de pacotes por segundo. Além disso, há um limite de 1024 PPS para cada interface de rede elástica conectada à instância. Se sua taxa de PPS para o serviço IMDS exceder 1024 PPS, a solicitação será limitada.

Se ocorrer uma limitação, tente novamente sua solicitação com uma estratégia de recuo exponencial.

Para ver com que frequência as instâncias do EC2 atingem os limites de limitação, verifique a métrica linklocal\ _allowance\ _exceededno driver da Elastic Network Interface. Essa métrica indica que o número de pacotes moldados devido ao tráfego para serviços de proxy locais excede o máximo para a interface de rede.

Execute o comando a seguir para visualizar a métrica linklocal\ _allowance\ _exceeded:

$ ethtool -S <Network-Interface>
eg: $ ethtool -S eth0

Informações relacionadas

Usando um proxy em instâncias do Amazon EC2

Exemplos de recuperação de metadados da instância

Limitar o acesso ao IMDS

Limitação de consultas

Métricas para o driver ENA

AWS OFICIAL
AWS OFICIALAtualizada há 10 meses