Por que recebo erros quando uso o yum na minha instância do EC2 que executa o Amazon Linux 1, o Amazon Linux 2 ou o Amazon Linux 2023?

7 minuto de leitura
0

Eu recebo erros quando uso o yum na minha instância do Amazon Elastic Compute Cloud (Amazon EC2) que executa Amazon Linux 1, Amazon Linux 2 ou Amazon Linux 2023.

Breve descrição

Para determinar qual erro ocorreu, use as mensagens de saída do comando yum. Você pode receber uma das seguintes mensagens de erro comuns:

  • “A conexão atingiu o tempo limite ABCD em milissegundos”
  • “Erro HTTP 403 - Proibido”
  • “Não foi possível resolver o host: abcdexyz.$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 ABCD em milissegundos

Para solucionar esse problema, verifique se o grupo de segurança anexado à sua instância permite tráfego HTTP ou HTTPS de saída. Verifique também se as listas de controle de acesso à rede (ACLs de rede) associadas à sub-rede da sua instância permitem tráfego HTTP ou HTTPS de saída.

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

Para acessar os repositórios do Amazon Linux, sua instância deve usar uma das seguintes configurações de acesso à Internet com base na sua configuração:

  • Para uma instância em uma sub-rede pública, use um gateway da internet.
  • Para uma instância em uma sub-rede privada, use um gateway NAT ou uma instância NAT.
  • Para uma instância em uma sub-rede pública ou privada, use um endpoint de nuvem privada virtual (VPC) do Amazon Simple Storage Service (Amazon S3).
  • Para uma instância em uma sub-rede privada com um proxy, adicione os seguintes parâmetros ao arquivo de configuração para configurar o yum para usar um proxy:
    proxy=http://proxy-server-IP-address:proxy_port
    proxy_username=proxy-user-name
    proxy_password=proxy-password
    **Observação:**se você já configurou o proxy e está usando o mesmo arquivo de configuração, a senha do proxy fica visível em texto simples no arquivo. Substitua proxy-port pela porta que o proxy usa, proxy-user-name pelo nome de usuário do proxy e proxy-password pela senha do proxy. Para mais informações, consulte Usar o yum com um servidor de proxy, no site do Fedora Project. Para o Amazon Linux 1 e o Amazon Linux 2, modifique o arquivo /etc/yum.conf. Para o Amazon Linux 2023, modifique o arquivo /etc/dnf/dnf.conf.

Depois de configurar sua instância, execute o comando curl a seguir para garantir que a instância possa acessar o repositório.

Amazon Linux 2023:

curl -I al2023-repos-us-east-1-de612dc2.s3.dualstack.us-east-1.amazonaws.com

Amazon Linux 1:

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

Amazon Linux 2:

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

**Observação:**nos comandos anteriores, substitua us-east-1 pela região AWS da sua instância.

O comando curl está pré-instalado em todas as imagens de máquina da Amazon (AMIs). No entanto, não é possível acessar os repositórios do Amazon Linux sem credenciais, e o comando curl não pode obter as credenciais de um repositório yum. Ao executar o comando curl, você recebe uma mensagem de erro de acesso negado semelhante ao exemplo a seguir:

$ 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

Use o comando curl para testar se o problema de tempo limite ainda está ocorrendo. O exemplo de mensagem de erro mostra que a rede está acessível e que o problema de tempo limite não está mais ocorrendo:

Erro HTTP 403 - Proibido

Você usa um endpoint da VPC

Se você usa um endpoint da VPC do Amazon S3, certifique-se de que a política anexada permita a chamada de API s3:GetObject com base na sua versão Linux.

Amazon Linux 2023: arn:aws:s3:::al2023-repos-region-de612dc2/*

Amazon Linux 1: arn:aws:s3:::packages.region.amazonaws.com/* e arn:aws:s3:::repo.region.amazonaws.com/*

Amazon Linux 2: arn:aws:s3:::amazonlinux.region.amazonaws.com/ e arn:aws:s3:::amazonlinux-2-repos-region/

**Observação:**nos recursos anteriores, substitua a region pela região da sua instância.

Para mais informações, consulte Endpoints do gateway do Amazon S3.

Você usa um proxy

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

Você usa um repositório não suportado

Você pode receber o seguinte erro: “Erro: Falha ao baixar metadados para o repositório “amazonlinux”: A verificação de GPG está ativada, mas a assinatura GPG não está disponível. Isso pode ser um erro ou o repositório não suporta a verificação de GPG.“ Esse é um problema conhecido que ocorre quando você ativa repo_gpgcheck nos arquivos do repositório no diretório**/etc/yum.repos.d/**, por exemplo, arquivos repository.repo ou /etc/yum.conf. Os repositórios do Amazon Linux 2023 não têm a assinatura de metadados ativada. Além disso, se você usar essa configuração para repositórios não suportados, as instalações de pacotes ou as atualizações do sistema operacional (SO) poderão apresentar falha. Como solução alternativa, abra o arquivo repo do repositório e defina o valor de repo_gpgcheck para o repositório como 0. Por exemplo, defina o valor como repo_gpgcheck=0.

Para mais informações sobre essa situação, consulte[\ Bug] - não é possível instalar/atualizar pacotes após ativar repo_gpgcheck no site do GitHub.

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

O diretório /etc/yum/vars deve incluir as variáveis awsdomain e awsregion. Para verificar se o diretório /etc/yum/vars define suas variáveis personalizadas do yum, execute os seguintes comandos:

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

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

**Observação:**substitua us-east-1 pela região da sua instância.

A instância deve resolver o nome de domínio dos repositórios do Amazon Linux. Para verificar a resolução de DNS da instância, execute os seguintes comandos:

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

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

$ dig al2023-repos-us-east-1-de612dc2

**Observação:**substitua us-east-1 pela região da sua instância.

Observe que as consultas ao servidor DNS fornecido pela Amazon no endereço IPv4 169.254.169.253 e no endereço IPv6 fd00:ec2::253 sã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 são bem-sucedidas. O endereço IPv6 só pode ser acessado em instâncias do EC2 baseadas em Nitro.

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

Esse problema ocorre quando o proxy não consegue concluir a solicitação porque o yum ou o dnf não têm as credenciais de autenticação corretas para o servidor de proxy. Para configurar o yum ou o dnf para usar um proxy, modifique o arquivo de configuração com os seguintes parâmetros:

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

**Observação:**se você já configurou o proxy e está usando o mesmo arquivo de configuração, a senha do proxy fica visível em texto simples no arquivo. Substitua proxy-port pela porta que o proxy usa, proxy-user-name pelo nome de usuário do proxy e proxy-password pela senha do proxy. Para o Amazon Linux 1 e o Amazon Linux 2, modifique o arquivo /etc/yum.conf. Para o Amazon Linux 2023, modifique o arquivo /etc/dnf/dnf.conf.

Problemas de tempo limite

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

cat /etc/resolv.conf
nameserver YourDNSIP

Para modificar o período de tempo limite padrão de 5000 ms, modifique o valor de timeout no arquivo de configuração do yum. Para mais informações, consulte yum.conf no site die.net. Para o Amazon Linux 2023, altere o valor de metadata_expire em /etc/yum.repos.d/amazonlinux.repo para modificar o período de tempo limite.

Para usar um comando dig para verificar o tempo da consulta, execute o seguinte comando:

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

**Observação:**substitua us-east-1 pela região da sua instância.

AWS OFICIAL
AWS OFICIALAtualizada há 4 meses