Découvrez les étapes de dépannage qui pourraient vous être utiles si vous rencontrez des problèmes lors de la gestion des packages OS dans Artifact Registry.
Pour savoir comment résoudre les problèmes liés aux dépôts distants Artifact Registry pour les packages OS, consultez Résoudre les problèmes liés aux dépôts distants.Problèmes d'authentification et d'autorisation
Vous ne pouvez pas vous connecter à un dépôt pour effectuer des actions telles que l'installation d'un package.
Le résultat du gestionnaire de packages inclut une erreur 401 ou 403, qui indique des problèmes d'authentification ou d'autorisations.
Exemples d'erreurs Apt :
Err:1 ar+https://us-west1-apt.pkg.dev/projects/my-project my-package Release Error downloading: code 401
E: Failed to fetch https://us-west1-apt.pkg.dev/projects/my-project/dists/quickstart-apt-repo/main/binary-amd64/Packages 403 Forbidden [IP: 74.125.20.82 443] E: Some index files failed to download. They have been ignored, or old ones used instead.
Exemple d'erreur Yum :
/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
Plusieurs raisons peuvent expliquer ces erreurs. Assurez-vous que votre VM répond aux exigences suivantes :
Vérifiez que la VM est associée à un compte de service.
VM Compute Engine
- Accédez à la page Instances de VM.
Dans la liste des VM, cliquez sur le nom de votre VM.
Dans l'onglet Détails, le compte de service et les niveaux d'accès s'affichent sous API et gestion des identités.
Par défaut, les VM Compute Engine utilisent le compte de service par défaut de Compute Engine et disposent d'un ensemble limité de scopes d'accès. L'adresse e-mail du compte de service par défaut est au format
PROJECT_NUMBER-compute@developer.gserviceaccount.com.Selon la configuration de vos règles d'administration, le compte de service par défaut peut se voir attribuer automatiquement le rôle Éditeur sur votre projet. Nous vous recommandons vivement de désactiver l'attribution automatique des rôles en appliquant la contrainte de règle d'administration
iam.automaticIamGrantsForDefaultServiceAccounts. Si vous avez créé votre organisation après le 3 mai 2024, cette contrainte est appliquée par défaut.Si vous désactivez l'attribution automatique de rôles, vous devez choisir les rôles à attribuer aux comptes de service par défaut, puis attribuer ces rôles vous-même.
Si le compte de service par défaut dispose déjà du rôle Éditeur, nous vous recommandons de le remplacer par des rôles moins permissifs.Pour modifier les rôles du compte de service en toute sécurité, utilisez Policy Simulator pour voir l'impact de la modification, puis attribuez et révoquez les rôles appropriés.
Pour modifier le compte de service ou en associer un à une VM, consultez Modifier le compte de service et les niveaux d'accès d'une instance.
Autre VM
Pour les autres VM, vous devez disposer d'un compte de service pour agir en leur nom.
Si vous ne disposez pas d'un compte de service, créez-en un.
Attribuez le rôle Lecteur Artifact Registry (
roles.artifactregistry.reader) lorsque vous créez le compte de service. Vous n'aurez ainsi pas besoin de configurer les autorisations dans une étape distincte.
Assurez-vous que le compte de service de la VM dispose des autorisations de lecture pour le dépôt, ainsi que du niveau d'accès'API
cloud-platform.VM Compute Engine
Artifact Registry récupère automatiquement les identifiants du compte de service de la VM. Si le dépôt se trouve dans un projet différent de celui de la VM, vous devez accorder le rôle Lecteur Artifact Registry au compte de service de la VM. Vous devez également vous assurer que la VM dispose du niveau d'accès
cloud-platform.Pour définir le niveau d'accès
cloud-platform:Arrêtez l'instance de VM en remplaçant
INSTANCEpar le nom de l'instance de VM.gcloud compute instances stop INSTANCEDéfinissez le niveau d'accès :
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platformRedémarrez l'instance de VM.
gcloud compute instances start INSTANCE
Autre VM
Attribuez le rôle Lecteur Artifact Registry au compte de service de la VM. Par défaut, les comptes de service gérés par l'utilisateur disposent du niveau d'accès
cloud-platform.Vérifiez que vous avez suivi les étapes pour préparer la VM à accéder au dépôt. Consultez les instructions de préparation pour Apt ou Yum.
Vérifiez que vous avez correctement configuré Apt ou Yum pour accéder au dépôt.
Si vous vous connectez à un dépôt Apt depuis une VM Compute Engine, assurez-vous que l'URL du dépôt inclut le préfixe
ar+.
Problèmes liés aux assistants d'identification
Le message d'erreur suivant s'affiche lorsque la VM ne parvient pas à localiser l'assistant d'identifiants Apt :
E: Unable to locate package apt-transport-artifact-registry
Cette erreur se produit lorsque vous essayez d'installer le package apt-transport-artifact-registry sur une VM créée à partir d'une image qui n'inclut pas la clé de signature du dépôt Apt.
Pour résoudre ce problème, procédez comme suit :
Installez la clé de signature sur la VM :
VM Debian
Installez les clés de signature du dépôt Apt à l'aide de la commande suivante :
curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -Remplacez
LOCATIONpar l'emplacement régional ou multirégional du dépôt.VM Ubuntu
Installez les clés de signature du dépôt Apt à l'aide de la commande suivante :
curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -Remplacez
LOCATIONpar l'emplacement régional ou multirégional du dépôt.Réessayez les étapes de préparation de la VM.
Problèmes liés au plug-in d'authentification
Le message d'erreur suivant s'affiche en cas de problème avec le plug-in d'authentification Yum ou DNF :
Plugin "artifact-registry" can't be imported
Cette erreur peut se produire pour plusieurs raisons. Pour résoudre l'erreur, essayez d'exécuter le plug-in directement afin de confirmer les dépendances, de rechercher les problèmes Python ou de révéler d'autres problèmes sous-jacents possibles.
Pour exécuter le plug-in directement, utilisez l'une des commandes suivantes :
Pour le plug-in Yum :
python /usr/lib/yum-plugins/artifact-registry.pyPour le plug-in DNF :
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.pyRemplacez
VERSION-NUMBERpar la version Python par défaut de la distribution Linux. Par exemple, Enterprise Linux 8 inclut Python 3.6.Vous pouvez lister les fichiers du package de plug-in installé pour vérifier le nom du répertoire de la bibliothèque Python.
rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
Artefacts récemment importés manquants
Si votre client Apt ou Yum ne trouve pas un package qui a été récemment importé ou importé dans votre dépôt, il se peut que le processus de régénération de l'index de package Apt ou Yum ne soit pas encore terminé.
Pour les petits dépôts, la régénération du fichier d'index Apt ou Yum peut prendre plusieurs secondes. Pour les dépôts volumineux, la réindexation peut prendre plusieurs minutes, voire plus.
Pour vérifier qu'un package a bien été ajouté au dépôt, utilisez Google Cloud CLI pour lister les fichiers du package. Exécutez la commande suivante :
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
Par exemple, vous pouvez vérifier que le package python-gflags nommé python3-gflags_1.5.1-5_all.deb a bien été importé dans le dépôt us-west1-apt.pkg.dev\apt-project\apt-repo à l'aide de la commande suivante :
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=us-west1
Si le package a été importé correctement, le fichier apparaît dans le résultat avec un identifiant unique dans le nom de fichier, comme dans l'exemple suivant :
FILE CREATE_TIME UPDATE_TIME SIZE (MB) OWNER
pool/python3-gflags_1.5.1-5_all_2414c7af6a64c99a5f488aad366d637a.deb 2023-01-12T20:39:53 2023-01-12T20:39:53 0.035 projects/apt-project/locations/us-west1/repositories/apt-repo/packages/python3-gflags/versions/1.5.1-5
Erreur d'authentification pour certains packages importés ou importés
Si le temps nécessaire pour importer ou importer des fichiers dépasse la période d'expiration du jeton d'authentification, les importations au-delà de la période d'expiration échoueront. Les jetons expirent 60 minutes après leur obtention. Si le jeton a expiré, une erreur semblable à l'exemple suivant s'affiche dans le résultat de la commande d'importation.
errors:
- error:
code: 16
message: The request does not have valid authentication credentials.
gcsSource:
uris:
- gs://my-bucket/debs/python/python3-gflags_1.5.1-5_all.deb
Pour résoudre ce problème :
- Essayez d'importer ou d'importer le package spécifique uniquement pour vérifier que vous pouvez l'ajouter individuellement au lieu de l'importer par lot.
- Si plusieurs packages ont échoué, importez ou importez des lots plus petits afin que l'opération ne dépasse pas la période d'expiration du jeton.