Perché ricevo errori quando utilizzo yum sulla mia istanza EC2 che esegue Amazon Linux 1, Amazon Linux 2 o Amazon Linux 2023?

7 minuti di lettura
0

Ricevo errori quando utilizzo yum sulla mia istanza Amazon Elastic Compute Cloud (Amazon EC2) che esegue Amazon Linux 1, Amazon Linux 2 o Amazon Linux 2023.

Breve descrizione

Per determinare quale errore si è verificato, utilizza i messaggi di output del comando yum. Potresti ricevere uno dei seguenti messaggi di errore comuni:

  • "Connection timed out ABCD milliseconds"
  • "HTTP Error 403 - Forbidden"
  • "Could not resolve host: abcdexyz.$awsregion.$awsdomain"
  • "HTTP Error 407 - Proxy Authentication Required"
  • "Resolving timed out after 5000 milliseconds"

Risoluzione

Connection timed out ABCD milliseconds

Per risolvere questo problema, verifica che il gruppo di sicurezza collegato all'istanza consenta il traffico HTTP o HTTPS in uscita. Verifica inoltre che le liste di controllo degli accessi alla rete (ACL di rete) associate alla sottorete dell'istanza consentano il traffico HTTP o HTTPS in uscita.

L'esempio seguente mostra una ACL di rete personalizzata che consente il traffico in uscita sulle porte 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

Per accedere ai repository Amazon Linux, la tua istanza deve utilizzare una delle seguenti impostazioni di accesso a Internet in base alla tua configurazione:

  • Per un'istanza in una sottorete pubblica, utilizza un gateway Internet.
  • Per un'istanza in una sottorete privata, utilizza un gateway NAT o un'istanza NAT.
  • Per un'istanza in una sottorete pubblica o privata, utilizza un endpoint di un cloud privato virtuale (VPC) Amazon Simple Storage Service (Amazon S3).
  • Per un'istanza in una sottorete privata con un proxy, aggiungi i seguenti parametri al file di configurazione per configurare yum in modo che utilizzi un proxy:
    proxy=http://proxy-server-IP-address:proxy_port
    proxy_username=proxy-user-name
    proxy_password=proxy-password
    Nota: se hai già configurato il proxy e stai utilizzando lo stesso file di configurazione, la password del proxy è visibile in chiaro nel file. Sostituisci proxy-port con la porta utilizzata dal tuo proxy, proxy-user-name con il tuo nome utente proxy e proxy-password con la password del tuo proxy. Per ulteriori informazioni, consulta Using yum with a proxy server (Utilizzo di yum con un server proxy) sul sito di Fedora Project. Per Amazon Linux 1 e Amazon Linux 2, modifica il file /etc/yum.conf. Per Amazon Linux 2023, modifica il file /etc/dnf/dnf.conf.

Dopo aver configurato l'istanza, esegui il seguente comando curl per assicurarti che l'istanza possa accedere al repository.

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

Nota: nei comandi precedenti, sostituisci us-east-1 con la regione AWS della tua istanza.

Il comando curl è preinstallato su tutte le AMI (Amazon Machine Image). Tuttavia, non puoi accedere ai repository Amazon Linux senza credenziali e il comando curl non può accettare le credenziali di un repository yum. Quando esegui il comando curl, ricevi un messaggio di errore di accesso negato simile al seguente esempio:

$ 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

Utilizza il comando curl per verificare se il problema di timeout è ancora presente. Il messaggio di errore esemplificativo mostra che la rete è raggiungibile e il problema di timeout non è più presente.

HTTP Error 403 - Forbidden

Utilizzi un endpoint VPC

Se utilizzi un endpoint Amazon S3 VPC, assicurati che la policy collegata consenta la chiamata API s3:GetObject in base alla tua versione di 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/ and arn:aws:s3:::amazonlinux-2-repos-region/

Nota: nelle risorse precedenti, sostituisciregion con la regione della tua istanza.

Per ulteriori informazioni, consulta Endpoint gateway per Amazon S3.

Utilizzi un proxy

Se utilizzi un proxy per accedere ai repository Amazon Linux, verifica che il sottodominio .amazonaws.com sia nella lista consentita della tua configurazione dei proxy.

Utilizzi un repository non supportato

Potresti ricevere il seguente errore: "Error: Failed to download metadata for repo 'amazonlinux': GPG verification is activated, but GPG signature is not available. This may be an error or the repository does not support GPG verification". Questo è un problema noto che si verifica quando attivi repo_gpgcheck nei file del repository nella directory /etc/yum.repos.d/, ad esempio i file repository.repo o /etc/yum.conf. I repository Amazon Linux 2023 non hanno la firma dei metadati attivata. Inoltre, se utilizzi questa configurazione per repository non supportati, le installazioni dei pacchetti o gli aggiornamenti del sistema operativo (OS) potrebbero non riuscire. Come soluzione alternativa, apri il file repo del repository e imposta il valore di repo_gpgcheck per il repository su 0. Ad esempio, imposta il valore su repo_gpgcheck=0.

Per ulteriori informazioni su questa situazione, consulta [Bug] - not able to install/upgrade packages after activating repo_gpgcheck ([Bug] - impossibile installare/aggiornare pacchetti dopo l'attivazione di repo\ _gpgcheck) sul sito web di GitHub.

Could not resolve host: abcdexyz.$awsregion.$awsdomain

La directory /etc/yum/vars deve includere le variabili awsdomain e awsregion. Per verificare che la directory /etc/yum/vars definisca le variabili yum personalizzate, esegui i seguenti comandi:

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

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

Nota: sostituisci us-east-1 con la regione della tua istanza.

L'istanza deve risolvere il nome di dominio dei repository Amazon Linux. Per verificare la risoluzione DNS della tua istanza, esegui i seguenti comandi:

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

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

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

Nota: sostituisci us-east-1 con la regione della tua istanza.

Le query al server DNS fornito da Amazon all'indirizzo IPv4 169.254.169.253 e all'indirizzo IPv6 fd00:ec2: :253 hanno avuto esito positivo. Anche le query al server DNS fornito da Amazon all'indirizzo IP riservato alla base dell'intervallo di rete IPv4 del VPC più due hanno avuto esito positivo. L'indirizzo IPv6 è accessibile solo su istanze EC2 basate su Nitro.

HTTP Error 407 - Proxy Authentication Required

Questo errore si verifica quando il proxy non è in grado di completare la richiesta perché yum o dnf non dispone delle credenziali di autenticazione corrette per il server proxy. Per configurare yum o dnf per l'utilizzo di un proxy, modifica il file di configurazione con i seguenti parametri:

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

Nota: se hai già configurato il proxy e stai utilizzando lo stesso file di configurazione, la password del proxy è visibile in chiaro nel file. Sostituisci proxy-port con la porta utilizzata dal tuo proxy, proxy-user-name con il tuo nome utente proxy e proxy-password con la password del tuo proxy. Per Amazon Linux 1 e Amazon Linux 2, modifica il file /etc/yum.conf. Per Amazon Linux 2023, modifica il file /etc/dnf/dnf.conf.

Problemi di timeout

Esegui il seguente comando per verificare che il file /etc/resolv.conf includa l'indirizzo IP corretto del tuo server DNS:

cat /etc/resolv.conf
nameserver YourDNSIP

Per modificare il periodo di timeout predefinito di 5.000 ms, modifica il valore di timeout nel file di configurazione di yum. Per maggiori informazioni, consulta yum.conf sul sito web die.net. Per Amazon Linux 2023, modifica il valoremetadata_expire in /etc/yum.repos.d/amazonlinux.repo per modificare il periodo di timeout.

Per utilizzare un comando dig per controllare l'ora della query, esegui il comando seguente:

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

Nota: sostituisci us-east-1 con la regione della tua istanza.

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 mesi fa