Por que estou recebendo erros ao usar o yum em minha instância do EC2 que executam o Amazon Linux 1 ou Amazon Linux 2?

6 minuto de leitura
0

Por que estou recebendo erros ao usar o yum na minha instância do Amazon Elastic Compute Cloud (Amazon EC2) executando o Amazon Linux 1 ou o Amazon Linux 2?

Descrição breve

Use as mensagens de saída do comando yum para determinar qual erro ocorreu. A seguir estão as mensagens de erro comuns:

  • A conexão atingiu o tempo limite de XXX milissegundos
  • Erro HTTP 403 - Proibido
  • Não foi possível resolver o host: xxxxxxxxx.$awsregion.$awsdomain
  • Erro HTTP 407 - Autenticação de proxy necessária
  • A resolução atingiu o tempo limite após 5000 milissegundos

Resolução

A conexão atingiu o tempo limite de XXXX milissegundos

1.    Verifique se o grupo de segurança conectado à sua instância do EC2 permite tráfego http/https de saída.

2.    Verifique se as ACLs de rede associadas à sub-rede da sua instância do EC2 permitem tráfego http/https de saída por meio de suas NACLs.

O exemplo a seguir mostra uma ACL de rede personalizada que permite tráfego de saída nas portas 80 e 443:

Inbound rules
Rule#    Type                    Protocol    Port Range    Source        Allow/Deny
100      Custom TCP Rule         TCP (6)     1024-65535    0.0.0.0/0     ALLOW
101      Custom TCP Rule         TCP (6)     1024-65535    ::/0          ALLOW
*        ALL Traffic             ALL         ALL           ::/0          DENY
*        ALL Traffic             ALL         ALL           0.0.0.0/0     DENY
Outbound rules
Rule #    Type                   Protocol    Port Range    Source       Allow/Deny
100       HTTP (80)              TCP (6)     80            0.0.0.0/0    ALLOW
101       HTTPS (443)            TCP (6)     443           0.0.0.0/0    ALLOW
102       HTTP (80)              TCP (6)     80            ::/0         ALLOW
103       HTTPS (443)            TCP (6)     443           ::/0         ALLOW
*         ALL Traffic            ALL         ALL           ::/0         DENY
*         ALL Traffic            ALL         ALL           0.0.0.0/0    DENY

3.    Verifique se a sua instância do EC2 tem acesso aos repositórios do Amazon Linux usando uma das seguintes opções

proxy=http://proxy-server-IP-address:proxy_port
proxy_username="proxy-user-name"
proxy_password="proxy-password"

Para mais informações, consulte Usar o yum com um servidor proxy, no site fedoraproject.org.

4.    Depois de configurar sua instância usando uma das opções anteriores, execute o comando curl a seguir para confirmar que essa instância pode acessar o repositório. No comando a seguir, substitua us-east-1 pela região da sua instância.

Amazon Linux 1

curl -I repo.us-east-1.amazonaws.com

Amazon Linux 2

curl -I amazonlinux.us-east-1.amazonaws.com

Observação: o curl está pré-instalado em todas as AMIs, mas os repositórios do Amazon Linux não podem ser acessados sem credenciais. O curl não pode receber as credenciais de um repositório yum. Você receberá uma mensagem de erro de acesso negado semelhante à mostrada abaixo. O comando curl é usado para testar se o problema de tempo limite ainda está ocorrendo. A mensagem de erro mostra que a rede está acessível e que o problema de tempo limite não está mais ocorrendo:

$ curl -I amazonlinux.us-east-1.amazonaws.com
HTTP/1.1 403 Forbidden
x-amz-bucket-region: us-east-1
x-amz-request-id: xxxxxxxx
x-amz-id-2: xxxxxxxxxxxxx=
Content-Type: application/xml
Date: Thu, 17 Nov 2022 16:59:59 GMT
Server: AmazonS3

Para instalar um software, como o telnet, execute o seguinte comando:

sudo yum install telnet

Erro HTTP 403 - Proibido

1.    Se você usa um endpoint de VPC Amazon S3 na VPC da sua instância, verifique se a política anexada permite a chamada da API s3:GetObject nos seguintes recursos:

Amazon Linux 1:

"arn:aws:s3:::packages.region.amazonaws.com/*"

"arn:aws:s3:::repo.region.amazonaws.com/*"

Amazon Linux 2:

"arn:aws:s3:::amazonlinux.region.amazonaws.com/*"

"arn:aws:s3:::amazonlinux-2-repos-region/*"

Observação: substitua a região nos exemplos anteriores pela região da sua instância.

Para mais informações, consulte Endpoint policies for Amazon S3 (Políticas de endpoint para o Amazon S3).

2.    Se você usa um proxy para acessar repositórios do Amazon Linux, verifique se os subdomínios .amazonaws.com estão na lista de permissões na sua configuração de proxy.

Não foi possível resolver o host: xxxxxxxx.$awsregion.$awsdomain

1.    Execute os comandos a seguir para verificar se o diretório /etc/yum/vars define variáveis personalizadas do yum. O diretório deve incluir as variáveis awsdomain e awsregion. No comando de exemplo a seguir, substitua us-east-1 pela região da sua instância.

$ cat /etc/yum/vars/awsregion
us-east-1

$ cat /etc/yum/vars/awsdomain
amazonaws.com

2.    Verifique a resolução de DNS da sua instância. A instância deve resolver o nome de domínio dos repositórios do Amazon Linux:

$ dig amazonlinux.us-east-1.amazonaws.com

$ dig repo.us-east-1.amazonaws.com

As consultas ao servidor DNS fornecido pela Amazon no endereço IPv4 169.254.169.253 e no endereço IPv6 fd00:ec2::253 serão bem-sucedidas. As consultas ao servidor DNS fornecido pela Amazon no endereço IP reservado na base do intervalo de rede IPv4 da VPC mais dois também serão bem-sucedidas. O endereço IPv6 é acessível somente em instâncias do EC2 criadas no Nitro System.

Erro HTTP 407 - Autenticação de proxy necessária

Ocorre se o proxy não consegue concluir a solicitação porque o yum não tem credenciais de autenticação adequadas para seu servidor proxy. Para configurar o yum para usar um proxy, modifique o arquivo /etc/yum.conf com os parâmetros a seguir:

proxy=http://proxy-server-IP-address:proxy_port
proxy_username=proxy-user-name
proxy_password=proxy-password

A resolução atingiu o tempo limite após 5000 milissegundos

Execute o comando a seguir para verificar se o arquivo /etc/resolv.conf tem o IP correto do seu servidor DNS:

cat /etc/resolv.conf
nameserver YourDNSIP

Você pode modificar o período limite de 5000 milissegundos modificando o valor timeout no arquivo de configuração do yum.

Para verificar o tempo da consulta usando dig, execute o seguinte comando:

$ dig repo.us-east-1.amazonaws.com | grep time

AWS OFICIAL
AWS OFICIALAtualizada há um ano