Comment résoudre l'erreur « ResourceInitializationError: failed to validate logger args » (ResourceInitializationError : échec de validation des arguments du journal) dans Amazon ECS ?

Dernière mise à jour : 31/01/2023

Lorsque j'exécute une tâche dans Amazon Elastic Container Service (Amazon ECS), je reçois le message d'erreur « ResourceInitializationError : failed to validate logger args » (ResourceInitializationError : échec de validation des arguments du journal).

Brève description

Amazon ECS renvoie une erreur de type ResourceInitialization lorsqu'une tâche Amazon ECS ne trouve pas le groupe de journaux Amazon CloudWatch défini dans la définition definitionAmazon de la tâche. Vous recevez le message d'erreur suivant : 

« ResourceInitializationError: failed to validate logger args: create stream has been retried 1 times: failed to create Cloudwatch log stream: ResourceNotFoundException: The specified log group does not exist. : exit status 1 » (ResourceInitializationError : échec de validation des arguments du journal : la création du flux a été retentée 1 fois : échec de la création du flux de journaux Cloudwatch : ResourceNotFoundException : Le groupe de journaux spécifié n'existe pas. : état de sortie 1).

Pour résoudre cette erreur, créez un nouveau groupe de journaux pour la tâche.

Solution

Pour résoudre l'erreur ResourceInitialization, examinez les solutions suivantes pour créer un nouveau groupe de journaux pour la tâche.

Si vous ne savez pas quel groupe de journaux est défini dans la définition de la tâche et renvoie une erreur, exécutez la commande suivante :

aws ecs describe-task-definition --task-definition nginx-fargate:3 | jq -r .taskDefinition.containerDefinitions[].logConfiguration

La sortie décrit la tâche que vous devez recréer dans CloudWatch.

Création d'un groupe de journaux CloudWatch dans la console

1.    Ouvrez la console CloudWatch.

2.    Dans la barre de navigation, sélectionnez la région où se trouve le cluster Amazon ECS.

3.    Dans le panneau de navigation de gauche, sélectionnez Logs (Journaux), puis Log groups (Groupes de journaux).

4.    Dans la fenêtre Log groups (Groupes de journaux), sélectionnez Create log group (Créer un groupe de journaux).

Création d'un groupe de journaux CloudWatch à l'aide de l'AWS CLI

 

Créez un groupe de journaux CloudWatch à l'aide de la commande create-log-group de l'interface de la ligne de commande AWS (AWS CLI). L'exemple de commande suivant crée un groupe de journaux nommé mylogs :

Remarque : si vous recevez des erreurs lors de l'exécution des commandes d'AWS CLI, assurez-vous que vous utilisez la version d'AWS CLI la plus récente.

 

aws logs create-log-group --log-group-name mylogs

Utilisation de la fonction de configuration automatique dans la console Amazon ECS

L'option de configuration automatique crée un groupe de journaux pour vous en utilisant le nom de famille de définition de tâche avec le préfixe ecs. L'exemple suivant spécifie une configuration de journal dans votre définition de tâche :

{
  "containerDefinitions": [
    {
      "logConfiguration": {
        "logDriver": "awslogs",
         "options": {
           "awslogs-group": "/ecs/task_definition_familyname ",
           "awslogs-region": "eu-west-1",
           "awslogs-stream-prefix": "ecs"
    }
  }
}

Vous pouvez également créer un groupe de journaux personnalisé en procédant comme suit :

1.    Précisez les options de configuration du journal.

2.    Ajoutez la clé awslogs-create-group avec la valeur true. Cette action crée le groupe de journaux pour vous.

L'exemple suivant spécifie une configuration de journal dans votre définition de tâche avec un jeu d'options :

{
  "containerDefinitions": [
    {
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "example_container",
          "awslogs-region": "eu-west-1",
          "awslogs-create-group": "true",
          "awslogs-stream-prefix": "example"
    }
  }
}

Remarque : la politique gérée AmazonECSTaskExecutionRolePolicy de la gestion des identités et des accès AWS (IAM) n'inclut pas les autorisations logs:CreateLogGroup. Pour utiliser l'option awslogs-create-group, ajoutez logs:CreateLogGroup en tant que politique IAM en ligne.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?