Comment puis-je mettre à jour les informations d'identification de mon référentiel privé sur un agent de conteneur Amazon ECS ?
Je souhaite mettre à jour les informations d'identification de mon référentiel privé sur un agent de conteneur Amazon Elastic Container Service (Amazon ECS) fourni via AWS Secrets Manager ou des variables d'environnement.
Brève description
Pour fournir les informations d'identification du référentiel privé à l'agent de conteneur Amazon ECS, utilisez Secrets Manager dans votre définition de tâche ou des variables d'environnement.
Remarque : Le stockage des informations d'identification en texte brut sur les instances de conteneur ne constitue pas une bonne pratique de sécurité. À moins qu'il n'existe une dépendance architecturale directe au stockage des informations d'identification de registre dans l'instance de conteneur, utilisez plutôt Secrets Manager.
Résolution
Mettre à jour les informations d'identification de votre référentiel privé avec Secrets Manager
Procédez comme suit :
- Ouvrez la console Secrets Manager.
- Choisissez votre secret, puis choisissez Récupérer la valeur du secret.
- Sélectionnez Modifier.
- Mettez à jour les informations d'identification stockées pour votre registre privé, puis choisissez Enregistrer.
- Suivez les étapes décrites dans la section Tester les informations d'identification mises à jour de votre référentiel privé.
Mettre à jour les informations d'identification de votre référentiel privé avec des variables d'environnement
Procédez comme suit :
- Connectez-vous à votre instance de conteneur.
- Pour vérifier la manière dont vous fournissez les informations d'identification Docker à votre agent de conteneur ECS, exécutez la commande suivante :
Cette commande renvoie le contenu du fichier /etc/ecs/ecs.config.$ cat /etc/ecs/ecs.config
Si la variable ECS_ENGINE_AUTH_TYPE est définie sur docker, vous transmettez directement vos informations d'identification Docker en texte brut à votre agent de conteneur ECS. Cependant, il n’est pas recommandé d'utiliser cette approche. Utilisez plutôt Secrets Manager. Vous pouvez également utiliser l'approche de format dockercfg dans la section Obtenir une nouvelle valeur d'authentification Docker suivante.
Si la variable ECS_ENGINE_AUTH_TYPE est définie sur dockercfg, vous transmettez vos informations d'identification Docker au moyen d'une valeur d'authentification générée par Docker que la commande docker login génère. Si vous utilisez cette approche, suivez les étapes décrites dans la section Obtenir une nouvelle valeur d'authentification Docker.
Obtenir une nouvelle valeur d'authentification Docker
Procédez comme suit :
-
Pour vous connecter localement à votre compte Docker, exécutez la commande suivante, puis entrez vos nouvelles informations d'identification :
$ docker login -
Pour concaténer votre fichier config.json, exécutez la commande suivante, puis copiez la valeur de la clé d'authentification générée par Docker :
$ cat ~/.docker/config.json -
Pour mettre à jour la variable ECS_ENGINE_AUTH_DATA, exécutez la commande suivante :
$ sudo vi /etc/ecs/ecs.config -
Dans l'éditeur vi, mettez à jour la valeur de la variable ECS_ENGINE_AUTH_DATA par la valeur de la clé d'authentification Docker. Exemple :
ECS_CLUSTER=TestECSCluster ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"a2vpdGhhd3M6UGFzc3dvcmQ=","email":"email@example.com"}} -
Suivez les étapes décrites dans la section Redémarrer votre agent de conteneur ECS.
Redémarrer votre agent de conteneurs ECS
Procédez comme suit :
- Pour redémarrer votre agent de conteneur ECS, exécutez l'une des commandes suivantes en fonction des Amazon Machine Images (AMI) exécutées par vos instances de conteneur.
AMI optimisées pour Amazon Linux 2 ECS :
Remarque : Amazon Linux 1 a atteint sa fin de vie le 31 décembre 2023. L'AMI Amazon Linux ne recevra plus aucune mise à jour de sécurité ni aucune correction de bogues. Pour plus d'informations, consultez la section Mettre à jour à la fin de vie de l'AMI Amazon Linux.$ sudo systemctl restart ecs
AMI optimisées pour Amazon Linux ECS :
Remarque : Pour mettre à jour le fichier /etc/ecs/ecs.config sur d'autres instances de conteneur de votre cluster ECS, consultez la section Mettre à jour les informations d'identification de votre référentiel privé avec des variables d'environnement. Puis, suivez le processus de mise à jour pour chaque instance de conteneur.$ sudo stop ecs && sudo start ecs - Suivez les étapes décrites dans la section Tester les informations d'identification mises à jour de votre référentiel privé.
Tester les informations d'identification mises à jour de votre référentiel privé
Remarque : Dans l'exemple de test suivant, une image mise à jour est déployée sur un cluster.
Procédez comme suit :
- Ouvrez la console Amazon ECS.
- Dans le volet de navigation, choisissez Clusters, puis sélectionnez votre cluster.
- Sélectionnez votre service, puis choisissez Mettre à jour.
- Cochez la case Forcer un nouveau déploiement.
- Sélectionnez Mettre à jour.
- Dans l'onglet Déploiements, examinez le nouveau déploiement. Amazon ECS arrête progressivement les tâches lors du déploiement précédent. Amazon ECS redémarre ensuite les tâches dans le cadre du nouveau déploiement pendant qu'ECS tente d'extraire une nouvelle image.
Remarque : Si vous utilisez des tâches de type EC2 Launch, votre cluster doit disposer d’une quantité suffisante de ressources pour effectuer avec succès un déploiement de mise à jour de type continu. - Choisissez l'onglet Tâches, puis examinez chaque tâche et son statut.
Si le statut de la nouvelle tâche est défini sur En cours d'exécution, le service a correctement mis à jour la tâche sans erreur.
Si le dernier statut de la nouvelle tâche est défini sur Arrêté | La tâche n'a pas pu démarrer, le service a mis à jour cette tâche, puis a rencontré une erreur. L'agent de conteneur ECS ne peut pas extraire une nouvelle image de conteneur et utilise l'ancienne image mise en cache. Vérifiez que vos informations d'identification ont été mises à jour, puis effectuez une autre mise à jour du déploiement du service.
Remarque : Pour afficher les détails complets de votre tâche et voir l'erreur « Pull access denied » (Accès en extraction refusé), choisissez l'ID de la tâche qui a échoué. Sur la page Description, sous Conteneurs, sélectionnez Arrêté.
Exemple de message d’erreur :
« CannotPullContainerError: Error response from daemon: pull access denied for user/reponame, repository does not exist or may require 'docker login' (Réponse d'erreur du démon : accès en extraction refusé pour l'utilisateur/reponame, le référentiel n'existe pas ou peut nécessiter une 'connexion à docker' »
Informations connexes
- Sujets
- Containers
- Langue
- Français

Contenus pertinents
- Réponse acceptéedemandé il y a un an
- demandé il y a 2 ans
- demandé il y a 4 mois
- demandé il y a 2 ans
- demandé il y a 2 mois
AWS OFFICIELA mis à jour il y a 6 mois