Comment résoudre l’erreur « ResourceInitializationError : échec de validation des arguments de l’enregistreur » dans Amazon ECS ?

Lecture de 4 minute(s)
0

Lorsque j’exécute une tâche dans Amazon Elastic Container Service (Amazon ECS), je reçois le message d’erreur « ResourceInitializationError : échec de validation des arguments de l’enregistreur ».

Brève description

Lorsqu’une tâche Amazon ECS ne trouve pas le groupe de journaux Amazon CloudWatch défini dans la tâche definitionAmazon, Amazon ECS renvoie une erreur ResourceInitialization. Si vous recevez le message d’erreur suivant :

« ResourceInitialization : échec de validation des arguments de l’enregistreur : 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 l’erreur, créez un nouveau groupe de journaux pour la tâche.

Pour résoudre les erreurs liées aux tâches Amazon ECS qui ne démarrent pas, utilisez le runbook AWSSupport-TroubleshootECSTaskFailedToStart. Suivez les étapes de dépannage adaptées à votre problème.

Résolution

Trouver une tâche qui n’a pas pu démarrer

Important :

  • utilisez le runbook AWSSupport-TroubleshootECSTaskFailedToStart dans la même région AWS que celle où se trouvent les ressources de votre cluster ECS.
  • Lorsque vous appliquez le runbook, vous devez utiliser le dernier ID de tâche ayant échoué. Si la tâche ayant échoué fait partie d’un service Amazon ECS, utilisez la dernière tâche ayant échoué dans le service. La tâche ayant échoué doit être visible dans ECS:DescribeTasks pendant l’automatisation. Par défaut, les tâches ECS arrêtées sont visibles pendant 1 heure après le passage à l’état Arrêté. L’utilisation du dernier identifiant de tâche ayant échoué permet d’éviter que le nettoyage de l’état de la tâche n’interrompe l’analyse pendant l’automatisation.

Pour savoir comment lancer le runbook, consultez la page AWSSupport-TroubleshootECSTaskFailedToStart. En fonction des résultats de l’automatisation, utilisez l’une des étapes de dépannage manuelles suivantes.

Résoudre l’erreur

Pour résoudre l’erreur ResourceInitialization, passez en revue les solutions suivantes afin de 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 le groupe de journaux que vous devez recréer dans CloudWatch.

Créer un groupe de journaux CloudWatch dans la console

  1. Ouvrez la console CloudWatch.
  2. Dans la barre de navigation, choisissez la région dans laquelle se trouve le cluster Amazon ECS.
  3. Dans le volet de navigation, choisissez Journaux, puis Groupes de journaux.
  4. Dans la fenêtre Groupes de journaux, choisissez Créer un groupe de journaux.

Créer un groupe de journaux CloudWatch avec AWS CLI

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

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

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

Utiliser la fonction de configuration automatique dans la console Amazon ECS

L’option de configuration automatique utilise le nom de la famille de définitions de tâches avec ecs comme préfixe afin de créer un groupe de journaux pour vous. L’exemple suivant spécifie une configuration de journal dans votre définition de tâche :

{  "containerDefinitions": [  
    {  
      "logConfiguration": {  
        "logDriver": "awslogs",  
        "options": {  
          "awslogs-create-group": "true",  
          "awslogs-group": "awslogs-wordpress",  
          "awslogs-region": "us-west-2",  
          "awslogs-stream-prefix": "awslogs-example"  
        }  
      }  
    }  
  ]  
}

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

  1. Spécifiez les options de configuration du journal.
  2. Ajoutez la clé awslogs-create-group avec la valeur vrai. Cela 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 des options définies :

{  "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 Gestion des identités et des accès AWS (AWS IAM) AmazonECSTaskExecutionRolePolicy n’inclut pas les autorisations logs:CreateLogGroup. Pour utiliser l’option awslogs-create-group, ajoutez logs:CreateLogGroup en tant que politique IAM intégrée.