Passer au contenu

Pourquoi est-ce que je reçois des erreurs lorsque j'utilise yum sur mon instance EC2 qui exécute Amazon Linux 1, Amazon Linux 2 ou Amazon Linux 2023 ?

Lecture de 7 minute(s)
0

Je reçois des messages d'erreur lors de l'utilisation de yum sur mon instance Amazon Elastic Compute Cloud (Amazon EC2) qui exécute Amazon Linux 1, Amazon Linux 2 ou Amazon Linux 2023.

Brève description

Pour identifier l'erreur qui s'est produite, utilisez les messages de sortie de la commande yum. Il est possible que vous receviez l'un des messages d'erreur courants suivants :

  • « 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 »

Résolution

La connexion a expiré en ABCD millisecondes

Pour résoudre ce problème, vérifiez que le groupe de sécurité associé à votre instance autorise le trafic HTTP ou HTTPS sortant. Vérifiez également que les listes de contrôle d'accès réseau (ACL réseau) associées au sous-réseau de votre instance autorisent le trafic HTTP ou HTTPS sortant.

L'exemple ci-dessous montre une ACL réseau personnalisée qui autorise le trafic sortant sur les ports 80 et 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

Pour accéder aux référentiels Amazon Linux, votre instance doit utiliser l'un des paramètres d'accès Internet suivants en fonction de votre configuration :

  • Pour une instance d'un sous-réseau public, utilisez une passerelle Internet.
  • Pour une instance d'un sous-réseau privé, utilisez une passerelle NAT ou une instance NAT.
  • Pour une instance d'un sous-réseau public ou privé, utilisez un point de terminaison de cloud privé virtuel (VPC) Amazon Simple Storage Service (Amazon S3).
  • Pour une instance d'un sous-réseau privé avec un proxy, ajoutez les paramètres suivants au fichier de configuration pour configurer yum afin qu'il utilise un proxy :
    proxy=http://proxy-server-IP-address:proxy_port
    proxy_username=proxy-user-name
    proxy_password=proxy-password
    Remarque : Si vous avez déjà configuré le proxy et que vous utilisez le même fichier de configuration, le mot de passe du proxy est visible en texte clair dans le fichier. Remplacez proxy-port par le port utilisé par votre proxy, proxy-user-name par votre nom d'utilisateur proxy et proxy-password par votre mot de passe de proxy. Pour plus d'informations, consultez la section Utilisation de yum avec un serveur proxy sur le site Web de Fedora Project. Pour Amazon Linux 1 et Amazon Linux 2, modifiez le fichier /etc/yum.conf. Pour Amazon Linux 2023, modifiez le fichier /etc/dnf/dnf.conf.

Après avoir configuré votre instance, exécutez la commande curl suivante pour vous assurer que l'instance peut accéder au référentiel.

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

Remarque : Dans les commandes précédentes, remplacez us-east-1 par la région AWS de votre instance.

La commande curl est préinstallée sur toutes les Amazon Machine Images (AMI). Cependant, vous ne pouvez pas accéder aux référentiels Amazon Linux sans informations d'identification et la commande curl ne peut pas utiliser les informations d'identification d'un référentiel yum. Lorsque vous exécutez la commande curl, vous recevez un message d'erreur d'accès refusé similaire à l'exemple suivant :

$ 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

Utilisez la commande curl pour vérifier si le problème de délai d'attente persiste. L’exemple de message d'erreur indique que le réseau est accessible et que le problème de délai d'attente ne se pose plus :

HTTP Error 403 - Forbidden

Vous utilisez un point de terminaison de VPC

Si vous utilisez un point de terminaison de VPC Amazon S3, assurez-vous que la politique associée autorise l'appel d'API s3:GetObject en fonction de votre version de Linux.

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

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

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

Remarque : Dans les ressources précédentes, remplacez region par la région de votre instance.

Pour plus d'informations, consultez la section Points de terminaison de passerelle pour Amazon S3.

Vous utilisez un proxy

Si vous utilisez un proxy pour accéder aux référentiels Amazon Linux, assurez-vous que le sous-domaine amazonaws.com figure sur la liste d'autorisation de votre configuration de proxy.

Vous utilisez un référentiel non pris en charge

Le message d'erreur suivant peut s'afficher : « 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 ». Il s'agit d'un problème connu qui se produit lorsque vous activez repo_gpgcheck dans les fichiers du référentiel situés dans le répertoire /etc/yum.repos.d/, par exemple les fichiers repository.repo ou /etc/yum.conf. La signature des métadonnées n'est pas activée dans les référentiels Amazon Linux 2023. De plus, si vous utilisez cette configuration pour des référentiels non pris en charge, les installations de packages ou les mises à jour du système d'exploitation peuvent échouer. Pour contourner le problème, ouvrez le fichier repo du référentiel et définissez la valeur de repo_gpgcheck pour le référentiel à 0. Par exemple, définissez la valeur sur repo_gpgcheck=0.

Pour plus d'informations sur cette situation, consultez la page [Bug] - impossibilité d’installer/mettre à niveau les packages après avoir activé repo_gpgcheck sur le site Web de GitHub.

Impossible de résoudre l'hôte : abcdexyz.$awsregion.$awsdomain

Le répertoire /etc/yum/vars doit inclure les variables awsdomain et awsregion. Pour vérifier que le répertoire /etc/yum/vars définit vos variables yum personnalisées, exécutez les commandes suivantes :

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

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

Remarque : Remplacez us-east-1 par la région de votre instance.

L'instance doit résoudre le nom de domaine des référentiels Amazon Linux. Pour vérifier la résolution DNS de votre instance, exécutez les commandes suivantes :

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

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

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

Remarque : Remplacez us-east-1 par la région de votre instance.

Notez que les requêtes adressées au serveur DNS fourni par Amazon à l'adresse IPv4 169.254.169.253 et à l'adresse IPv6 fd00:ec2::253 aboutissent. Les requêtes adressées au serveur DNS fourni par Amazon à l'adresse IP réservée à la base de la plage réseau IPv4 VPC plus deux aboutissent également. L'adresse IPv6 n'est accessible que sur les instances EC2 basées sur Nitro.

HTTP Error 407 - Proxy Authentication Required

Ce problème se produit lorsque votre proxy ne parvient pas à terminer la requête car yum ou dnf ne disposent pas des informations d'authentification correctes pour votre serveur proxy. Pour configurer yum ou dnf afin qu'ils utilisent un proxy, modifiez le fichier de configuration avec les paramètres suivants :

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

Remarque : Si vous avez déjà configuré le proxy et que vous utilisez le même fichier de configuration, le mot de passe du proxy est visible en texte clair dans le fichier. Remplacez proxy-port par le port utilisé par votre proxy, proxy-user-name par votre nom d'utilisateur proxy et proxy-password par votre mot de passe de proxy. Pour Amazon Linux 1 et Amazon Linux 2, modifiez le fichier /etc/yum.conf. Pour Amazon Linux 2023, modifiez le fichier /etc/dnf/dnf.conf.

Problèmes d’expiration de délai

Exécutez la commande suivante pour vous assurer que le fichier /etc/resolv.conf dispose de l’adresse IP appropriée pour votre serveur DNS :

cat /etc/resolv.conf
nameserver YourDNSIP

Pour modifier le délai d'expiration par défaut de 5 000 ms, modifiez la valeur de délai d'expiration dans le fichier de configuration yum. Pour plus d'informations, consultez la page yum.conf sur le site Web de die.net. Pour Amazon Linux 2023, modifiez la valeur de metadata_expire dans /etc/yum.repos.d/amazonlinux.repo pour modifier le délai d'expiration.

Pour utiliser une commande dig afin de vérifier l'heure de la requête, exécutez la commande suivante :

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

Remarque : Remplacez us-east-1 par la région de votre instance.

AWS OFFICIELA mis à jour il y a un an