Comment résoudre l'erreur « Erreur lors de l'extraction de la configuration de l'image : trop de requêtes » lorsque j'utilise des images Docker dans AWS CodeBuild ?

Lecture de 5 minute(s)
0

Je souhaite résoudre l'erreur « Erreur lors de l'extraction de la configuration de l'image : trop de requêtes » que je reçois lorsque j'utilise des images Docker dans AWS CodeBuild.

Brève description

Si vous utilisez des images Docker dans CodeBuild, vous pouvez être soumis à une limitation lorsque vous extrayez des couches du référentiel public DockerHub.

Pour résoudre l'erreur que vous recevez lorsque la limitation se produit, vous devez configurer CodeBuild pour authentifier les couches extraites à l'aide des informations d'identification de votre compte DockerHub.

**Important :**Pour effectuer les étapes suivantes, vous devez disposer d'un compte DockerHub ainsi que du nom d'utilisateur et du mot de passe de votre compte.

Résolution

Stockez vos informations d'identification DockerHub avec AWS Secrets Manager

1.    Ouvrez la console AWS Secrets Manager.

2.    Choisissez Stocker un nouveau secret.

3.    Dans la section Sélectionner un type de secret, choisissez Autre type de secret.

4.    Dans la section Spécifier les paires clé/valeur à stocker dans ce secret, choisissez l'onglet Clé secrète/valeur.

5.    Dans la première zone de texte, entrez le nom d'utilisateur. Dans la deuxième zone de texte, entrez votre nom d'utilisateur DockerHub. Choisissez ensuite Ajouter une ligne.

6.    Dans la première zone de texte de la nouvelle ligne, entrez le mot de passe. Dans la deuxième zone de texte, entrez votre mot de passe DockerHub. Choisissez ensuite Ajouter une ligne.

7.    Choisissez Suivant.

8.    Dans Nom secret, entrez le nom de votre secret. Par exemple : Dockerhub

9.    Choisissez Suivant.

10.    Vérifiez que le paramètre par défaut pour Désactiver la rotation automatique est sélectionné.

11.    Choisissez Suivant.

12.    Choisissez Stocker.

13.    Dans la colonne Nom du secret, choisissez votre secret.

14.    Dans la section Détails du secret, notez Amazon Resource Name (ARN) pour Secret ARN.

**Remarque :**Si vous avez créé un secret configuré avec une clé de chiffrement gérée par le client, vous devez ajouter des autorisations pour l'action kms:Decrypt à l'aide de la clé configurée.

Résoudre les problèmes de limitation qui se produisent pendant la phase de PROVISIONNEMENT

1.    Ouvrez la console CodeBuild.

2.    Dans le volet de navigation, choisissez Créer, puis sélectionnez Créer des projets.

3.    Choisissez votre projet de construction.

4.    Choisissez Modifier, puis Environnement.

5.    Choisissez Remplacer l'image.

6.    Pour Nouvelle image d'environnement, choisissez Image personnalisée.

7.    Pour le type d'environnement, sélectionnez votre image personnalisée.

8.    Pour Registre d'images, choisissez Autre registre.

9.    Pour URL de registre externe, entrez le nom de votre image Docker.

10.    Pour les informations d'identification du registre, entrez l'ARN secret que vous avez noté précédemment.

11.    Choisissez Mettre à jour l'environnement.

Résoudre les problèmes d'étranglement qui se produisent dans d'autres phases

**Important :**Vous devez accorder des autorisations AWS Identity and Access Management (IAM) à la fonction du service CodeBuild pour accéder au secret.

1.    Ouvrez la console CodeBuild.

2.    Dans le volet de navigation, choisissez Créer, puis sélectionnez Créer des projets.

3.    Choisissez votre projet de construction.

4.    Choisissez l'onglet Détails de la construction.

5.    Dans la section Environnement, pour la fonction du service, choisissez l'ARN de la fonction du service. Cela ouvre la console IAM.

6.    Dans l'onglet Autorisations, choisissez Ajouter une politique intégrée.

7.    Choisissez l'onglet JSON.

8.    Remplacez le code de l'éditeur de texte par la politique IAM suivante :

**Remarque :**Remplacez VOTRE \ _SECRET \ _ARN par l'ARN secret que vous avez noté précédemment.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "YOUR_SECRET_ARN*"
      ]
    }
  ]
}

9.    Choisissez Politique de révision.

  1. Dans Nom, entrez le nom de la politique. Par exemple : dockerhub_secret_access **Remarque :**Vous pouvez choisir n'importe quel nom pour la politique. Le nom est uniquement destiné à votre future référence.

11.    Choisissez Créer une politique.

Configurez CodeBuild pour récupérer le secret

1.    Ouvrez la console CodeBuild.

2.    Dans le volet de navigation, choisissez Créer, puis sélectionnez Créer des projets.

3.    Choisissez votre projet de construction.

4.    Choisissez Modifier, puis Environnement.

5.    Développez la section Configuration supplémentaire.

6.    Pour ajouter des variables d'environnement, dans la section Variables d'environnement, dans Nom, saisissez DOCKERHUB_USERNAME.

7.    Pour Valeur, entrez le nom de votre secret, suivi de :username. Par exemple : dockerhub:username

8.    Pour Type, choisissez Secrets Manager.

9.    Pour ajouter la variable d'environnement suivante, choisissez Ajouter une variable d'environnement.

10.    Dans le champ Nom, saisissez DOCKERHUB_PASSWORD.

11.    Pour Valeur, entrez le nom de votre secret, suivi de :password. Par exemple : dockerhub:password

12.    Pour Type, choisissez Secrets Manager.

13.    Choisissez Mettre à jour l'environnement.

14.    Modifiez votre buildspec et ajoutez la commande suivante avant d'effectuer toute autre action Docker :

echo "${DOCKERHUB_PASSWORD}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin

Avertissement : Cette commande peut enregistrer les détails de votre nom d'utilisateur et de votre mot de passe de connexion Docker dans les journaux de compilation. Après avoir résolu l'erreur d'accélération, réinitialisez votre mot de passe Docker.

Par exemple :

version: 0.2

phases:
  install:
    commands:
      - echo "${DOCKERHUB_PASSWORD}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin
  build:
    commands:
      - docker pull docker:dind
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an