Comment résoudre le message d'erreur « unable to pull secrets or registry auth » dans Amazon ECS ?
Le message d'erreur « unable to pull secrets or registry auth » s'affiche lorsque je lance une tâche Amazon Elastic Container Service (Amazon ECS).
Brève description
Lorsque vous lancez une tâche Amazon ECS, vous obtenez l'un des messages d'erreur suivants :
- « ResourceInitializationError: unable to pull secrets or registry auth: pull command failed: : signal: killed »
- « ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secret from asm: service call has been retried. »
La version de plateforme 1.4.0 pour AWS Fargate utilise l'interface réseau Elastic de la tâche pour extraire l'image et les secrets. Tout le trafic réseau passe par l'interface réseau Elastic de votre Amazon Virtual Private Cloud (Amazon VPC). Vous pouvez examiner ce trafic grâce à vos journaux de flux Amazon VPC. Cependant, la tâche utilise votre configuration réseau car les interfaces réseau Elastic sont placées dans votre Amazon VPC.
L'agent de conteneur Amazon ECS utilise le Rôle Gestion des identités et des accès AWS (AWS IAM) d'exécution des tâches pour obtenir des informations auprès des services suivants :
- AWS Systems Manager Parameter Store
- AWS Secrets Manager
Dans le cas de données chiffrées à l'aide d'une clé AWS Key Management Service (AWS KMS) gérée par le client, vous devez accorder les autorisations suivantes au rôle IAM d'exécution des tâches :
- ssm:GetParameters
- secretsmanager:GetSecretValue
- kms:Decrypt
Résolution
Utilisez le dossier d'exploitation AWSSupport-TroubleshootECSTaskFailedToStart pour résoudre les échecs de démarrage des tâches Amazon ECS. Si la sortie du dossier d'exploitation ne fournit aucune recommandation, utilisez les approches de dépannage manuelles décrites dans la section suivante.
Important :
- Utilisez le dossier d'exploitation correspondant à la région AWS où sont situées vos ressources de cluster ECS.
- Lorsque vous utilisez le dossier d'exploitation, utilisez l'ID de la tâche associée à l’échec le plus récent afin que le nettoyage de l'état de la tâche n'interrompe pas l'analyse pendant l'automatisation. Si la tâche en échec fait partie du service Amazon ECS, utilisez la dernière tâche qui a échoué dans le service. La tâche en échec doit être visible dans ECS:DescribeTasks lors de l'exécution de l'automatisation. Par défaut, les tâches ECS arrêtées restent visibles 1 heure après le passage à l'état Arrêté.
Utilisation du dossier d'exploitation TroubleshootECSTaskFailedToStart
Pour exécuter le dossier d'exploitation AWSSupport-TroubleshootECSTaskFailedToStart, procédez comme suit :
- Ouvrez la console AWS Systems Manager.
- Dans le volet de navigation, sous Change Management (Gestion des modifications), choisissez Automation (Automatisation).
- Choisissez Execute automation (Exécuter l’automatisation).
- Sélectionnez l'onglet Appartenant à Amazon.
- Dans le document Automatisation, recherchez TroubleshootECSTaskFailedToStart.
- Sélectionnez la carte AWSSupport-TroubleshootECSTaskFailedToStart.
Remarque : Sélectionnez le bouton radio, et non le nom de l'automatisation en lien hypertexte. - Sélectionnez Suivant.
Remarque : après l’exécution, les résultats de l'analyse sont renseignés dans la section Global output. Attendez toutefois que le statut du document passe à Opération réussie. Surveillez également les éventuelles exceptions dans la section Sortie. - Pour Exécuter le document d’automatisation, choisissez Exécution simple.
- Dans la section Paramètres d'entrée, pour AutomationAssumeRole, entrez l'ARN du rôle qui permet à Systems Manager Automation d'effectuer des actions.
Remarque : vérifiez que le rôle AutomationAssumeRole ou l'utilisateur ou le rôle IAM dispose des autorisations IAM requises pour exécuter le dossier d'exploitation AWSSupport-TroubleshootECSTaskFailedToStart. Si vous ne spécifiez pas de rôle IAM, Systems Manager Automation utilisera les autorisations de l’utilisateur ou du rôle IAM qui exécute le dossier d'exploitation. Pour en savoir plus sur la création d’un rôle d'utilisateur pour Systems Manager Automation, consultez la page Tâche 1 : Créer un rôle de service pour Automation. - Dans ClusterName, saisissez le nom du cluster dans lequel la tâche n'a pas pu démarrer.
- Dans TaskID, saisissez l'identification de la tâche qui a récemment échoué.
- Sélectionnez Exécuter.
En fonction des résultats de l'automatisation, utilisez l'une des mesures de dépannage manuel suivantes.
Vérifiez le routage entre vos sous-réseaux et Internet
Si votre tâche Fargate se trouve dans un sous-réseau public, vérifiez qu'une adresse IP publique lui est attribuée. Vérifiez également que la tâche présente un routage par défaut (0.0.0.0/0) vers une passerelle Internet. Si vous lancez une nouvelle tâche ou créez un nouveau service, activez l'option Attribution publique automatique.
Si vous utilisez les configurations suivantes, vous ne pouvez pas utiliser la passerelle Internet du sous-réseau public pour accéder à Secrets Manager ou à Systems Manager :
- Les points de terminaison du VPC Secrets Manager ou Systems Manager sont placés dans un sous-réseau public.
- Vous avez activé AmazonProvidedDNS dans vos paramètres DHCP Amazon VPC.
Vous pouvez utiliser un point de terminaison Amazon VPC à la place.
Remarque : vous ne pouvez pas activer l'option Attribution publique automatique pour les tâches existantes. Pour reconfigurer les services existants, utilisez l'interface de la ligne de commande AWS (AWS CLI). Vous ne pouvez pas utiliser la console de gestion AWS. Si vous avez utilisé une pile AWS CloudFormation pour créer votre service Amazon ECS, modifiez la propriété NetworkConfiguration pour AWS::ECS::Service afin de mettre à jour le service.
Si votre tâche Fargate se trouve dans un sous-réseau privé, vérifiez qu’elle possède un routage par défaut (0.0.0.0/0) vers la source de connectivité Internet.
La source de connectivité Internet peut être une passerelle NAT, AWS PrivateLink ou une autre source :
- Si vous utilisez une passerelle NAT, vous devez intégrer votre passerelle NAT à un sous-réseau public. Pour plus d'informations, consultez Architecture avec passerelle Internet et passerelle NAT.
- Si vous utilisez PrivateLink, vérifiez que votre infrastructure Fargate peut utiliser les groupes de sécurité pour vos points de terminaison Amazon VPC.
- Si vous utilisez un serveur de noms de domaine personnalisés, confirmez les paramètres de la requête DNS. La requête doit disposer d'un accès sortant sur le port 53 et utiliser les protocoles UDP et TCP. Un accès HTTPS sur le port 443 est également nécessaire.
Vérifiez les paramètres de votre ACL réseau et de votre groupe de sécurité
Vérifiez que votre liste de contrôle d'accès au réseau (ACL réseau) et vos groupes de sécurité ne bloquent pas l'accès sortant au port 443 depuis le sous-réseau. Pour en savoir plus, consultez la page Contrôler le trafic vers vos ressources AWS à l'aide de groupes de sécurité.
Remarque : Les tâches Fargate doivent disposer d'un accès sortant au port 443 pour autoriser le trafic sortant et accéder aux points de terminaison Amazon ECS.
Vérifiez vos points de terminaison Amazon VPC
Si vous utilisez PrivateLink, vous devez créer les points de terminaison requis. Les points de terminaison suivants sont requis pour les versions 1.4.0 ou ultérieures de la plateforme Fargate :
- com.amazonaws.region.ecr.dkr
- com.amazonaws.region.ecr.api
- Point de terminaison de passerelle S3
- com.amazonaws.region.logs
Pour en savoir plus, consultez la page Considérations relatives aux points de terminaison d’un VPC Amazon Elastic Container Registry (Amazon ECR).
Remarque : si votre définition de tâche utilise Secrets Manager, des paramètres Systems Manager ou Amazon CloudWatch Logs, vous devrez probablement définir des points de terminaison. Consultez cette documentation pour en savoir plus :
- Utilisation d'un point de terminaison VPC AWS Secrets Manager
- Création de points de terminaison VPC pour Amazon ECS
- Utilisation de CloudWatch Logs avec les points de terminaison d'un VPC d'interface
Pour PrivateLink, vérifiez que le groupe de sécurité d'Amazon VPC autorise le trafic provenant du groupe de sécurité des tâches Fargate ou de la plage d'adresses CIDR du VPC des tâches Fargate sur le port TCP 443.
Pour vérifier que l'infrastructure Fargate dispose d'un accès au service, consultez les politiques de points de terminaison d'un VPC et les politiques de points de terminaison pour Amazon Simple Storage Solution (Amazon S3).
Vérifiez vos autorisations et rôles IAM
Le rôle d'exécution de la tâche accorde les autorisations requises au conteneur Amazon ECS et aux agents Fargate pour effectuer des appels d'API pour la tâche. Fargate exige ce rôle lorsque vous effectuez les actions suivantes :
- Extraction d’une image de conteneur depuis Amazon ECR.
- Utilisation du pilote de journalisation awslogs.
- Utilisation de l'authentification du registre privé.
- Utilisation des secrets de Secrets Manager ou des paramètres du magasin de paramètres de Systems Manager pour référencer des données sensibles.
Si votre cas d'utilisation prévoit l'un des scénarios précédents, définissez les autorisations requises dans votre rôle d'exécution de tâches. Pour obtenir la liste complète des autorisations requises, consultez la section Rôle IAM d'exécution de tâches Amazon ECS.
Vérifiez les informations sensibles référencées dans la définition des tâches Amazon ECS
**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l'interface AWS CLI.
Vérifiez que les noms du secret et des paramètres correspondent aux noms référencés dans votre définition de tâche Amazon ECS. Vérifiez ensuite que les valeurs de la définition du conteneur correspondent à celles de votre définition de tâche Amazon ECS. Pour en savoir plus, consultez la page Comment transmettre des secrets ou des informations sensibles en toute sécurité à des conteneurs dans une tâche Amazon ECS ?
Si le paramètre du magasin de paramètres de Systems Manager et la tâche sont situés dans la même Région, utilisez l'ARN complet ou le nom du secret. Si le paramètre est situé dans une autre Région, vous devez spécifier l'ARN complet.
Pour vérifier l'ARN et le nom du paramètre Systems Manager, procédez comme suit :
- Ouvrez la console AWS Systems Manager.
- Dans le volet de navigation, sélectionnezMagasin de paramètres, puis confirmez le nom de votre magasin de paramètres.
- Pour obtenir l'ARN du paramètre, utilisez l'AWS CLI pour exécuter la commande suivante. Remplacez name_of_parameter_store_secret par le nom secret de votre magasin de paramètres :
Remarque : les paramètres qui font référence aux secrets de Secrets Manager ne peuvent pas utiliser les fonctionnalités de gestion des versions ou d'historique du magasin de paramètres. Pour plus d'informations, consultez la section Restrictions.$ aws ssm get-parameter —name <name_of_parameter_store_secret> —with-decryption
Informations connexes
Contenus pertinents
- demandé il y a un moislg...
- demandé il y a 4 moislg...
- demandé il y a 2 moislg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 8 mois
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a un an