Comment puis-je résoudre les erreurs de métadonnées qui s’affichent lorsque j'utilise les kits SDK AWS dans mes tâches ECS Fargate ?

Lecture de 5 minute(s)
0

Je souhaite résoudre les erreurs de métadonnées qui s’affichent lorsque j'utilise les kits de développement logiciel AWS (AWS SDK) dans mon Amazon Elastic Container Service (Amazon ECS) pour les tâches AWS Fargate.

Brève description

Résolvez les erreurs de métadonnées qui s’affichent lorsque vous utilisez les kits SDK AWS dans Amazon ECS pour vos tâches Fargate en fonction des scénarios suivants :

  • Impossible de récupérer les métadonnées d'instance sur les tâches Fargate.
  • Réception de l’erreur Informations d'identification manquantes dans la configuration ou impossibilité de charger les informations d'identification.
  • Erreurs de métadonnées intermittentes
  • Une erreur de délai d’attente a été reçue du service de métadonnées de l'instance.

Résolution

Impossible de récupérer les métadonnées d'instance sur les tâches Fargate

Si vous ne parvenez pas à récupérer les métadonnées d'instance de vos tâches Fargate, procédez comme suit :

  1. Utilisez Amazon ECS Exec pour accéder à un conteneur dans votre tâche :
    Remarque : Remplacez example-clustername par le nom de votre cluster, example-taskid par l'ID de tâche requis et example-containername par le nom de votre conteneur.

    aws ecs execute-command --cluster $example-clustername \
        --task $example-taskid \
        --container $example-containername \
        --interactive \
        --command "/bin/sh"
  2. Récupérez les métadonnées comme suit :
    Pour les tâches sur Fargate qui utilisent la version 1.4.0 ou ultérieure de la plateforme, utilisez le point de terminaison des métadonnées de tâches version 4 :

    curl ${ECS_CONTAINER_METADATA_URI_V4}/task

    Pour les tâches sur Fargate qui utilisent des versions de plateforme antérieures à la version 1.4.0, utilisez la commande suivante :

    curl ${ECS_CONTAINER_METADATA_URI}/task

Réception de l'erreur « Informations d'identification manquantes dans la configuration ou impossible de charger les informations »

Vérifiez si vous avez reçu le message d'erreur suivant ou message similaire :

« Informations d'identification manquantes dans la configuration ou Impossible de charger les informations d'identification d'aucun fournisseur ou Impossible de récupérer le jeton »

Cette erreur se produit lorsque la tâche Fargate est lancée sans qu'un rôle de tâche ne soit ajouté à sa définition de tâche. Cette erreur se produit également lorsqu'aucun remplacement de rôle de tâche n'est spécifié dans le fonctionnement manuel de l'API RunTask manuel et qu'aucune autre information d'identification AWS n'est fournie.

Pour résoudre cette erreur, procédez de la manière suivante :

  1. Utilisez Amazon ECS Exec pour accéder à un conteneur dans votre tâche :
    Remarque : Remplacez example-cluster-name par le nom de votre cluster, example-task-id par l'ID de tâche requis et example-container-name par le nom de votre conteneur.

    aws ecs execute-command --cluster $example-cluster-name \
        --task $example-task-id \
        --container $example-container-name \
        --interactive \
        --command "/bin/sh"
  2. Vérifiez le rôle AWS Identity and Access Management (IAM) associé à votre tâche :

    curl -s 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

    Exemple de sortie :

    {
      "RoleArn": "arn:aws:iam::ACCOUNT_ID:role/<task_role_name>",
      "AccessKeyId": "XXXXXXXXXXXXXXXXX",
      "SecretAccessKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "Token": "IQoJb......",
      "Expiration": "2024-03-29T19:19:25Z"
    }

    Remarque : Si une tâche Fargate ne possède pas de rôle IAM dans la définition de la tâche, une erreur 404 page introuvable est renvoyée.

  3. Assurez-vous que votre kit SDK AWS utilise la chaîne de fournisseurs d'informations d'identification par défaut des métadonnées du conteneur dans le code d'application de tâche Fargate. Cela permet de charger les informations d'identification à partir de la variable d'environnement système AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.

Erreurs de métadonnées intermittentes

Les causes possibles des erreurs de métadonnées intermittentes lorsque vous accédez à un point de terminaison de métadonnées sont les suivantes :

  • Épuisement des ressources, tel qu'une utilisation élevée du processeur et de la mémoire
  • Nombre élevé de threads ou de processus en cours d'exécution simultanés
  • Pics de processeur
  • Pression de disque élevée sur le volume d'une tâche, due à une opération intensive exécutée dans l'application
  • Un service de métadonnées de tâches qui est interrogé à une fréquence élevée dans le conteneur, ce qui se produit lorsque vous effectuez des appels d'API

Pour résoudre vos erreurs de métadonnées intermittentes, procédez comme suit :

  • Configurez la tâche Fargate avec une quantité appropriée de capacité de processeur et de mémoire dans la définition de tâche. Configurez CloudWatch Container Insights pour suivre les métriques de vos applications conteneurisées.
  • Utilisez CloudWatch Container Insights et le point de terminaison des métadonnées de tâches Amazon ECS pour surveiller l'utilisation du stockage des tâches. Vérifiez l'utilisation de votre disque et déterminez si elle doit être augmentée.
  • Réduisez la fréquence à laquelle votre code d’application interroge le service de métadonnées des tâches. Par exemple, créez des objets AWS une seule fois. Réutilisez ensuite l'instance lorsque vous effectuez des appels d'API ultérieurs dans votre code d’application.
  • Utilisez la dernière version du SDK AWS. Les nouvelles versions du kit SDK AWS récupèrent automatiquement les informations d'identification à partir de la variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI lorsque vous effectuez des appels d'API.

Réception d’une erreur de délai d’attente de la part du service de métadonnées d'instance

Si une erreur de délai d’attente s’affiche dans le service de métadonnées d'instance, cela signifie que le seuil de délai d’expiration défini dans le code d'application a été dépassé. Cela se produit lorsque des requêtes de service de métadonnées sont mises en file d'attente en raison d'un manque de processeur ou de mémoire, ou lorsque le nombre de processus en cours d'exécution est élevé.

Pour résoudre cette erreur, procédez comme suit :

  • Vérifiez le délai d'expiration défini dans votre code d’application. Assurez-vous que vous disposez d'une valeur de délai d'expiration appropriée pour le service de métadonnées d'instance.
  • Pour récupérer les informations d'identification, implémentez de nouvelles tentatives. Réduisez également la fréquence des appels au service de métadonnées.
  • Configurez la tâche Fargate avec une quantité appropriée de processeur et de mémoire dans la définition de tâche.

Informations connexes

Rôle de tâche Amazon ECS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 5 mois