Wie behebe ich den Fehler „ResourceInitializationError: Logger-Argumente konnten in Amazon ECS nicht validiert werden?

Lesedauer: 4 Minute
0

Wenn ich eine Aufgabe in Amazon Elastic Container Service (Amazon ECS) ausführe, erhalte ich den Fehler „ResourceInitializationError: Logger-Argumente konnten nicht validiert werden“.

Kurzbeschreibung

Wenn eine Amazon-ECS-Aufgabe die Amazon-CloudWatch-Protokollgruppe, die in der Aufgabe definitionAmazon definiert ist, nicht finden kann, gibt Amazon ECS einen ResourceInitialization-Fehler zurück. Sie erhalten die folgende Fehlermeldung:

„ResourceInitializationError: Logger-Argumente konnten nicht validiert werden: Stream erstellen wurde 1 Mal wiederholt: CloudWatch-Protokoll-Stream konnte nicht erstellt werden: ResourceNotFoundException: Die angegebene Protokollgruppe existiert nicht. : Exit-Status 1"

Um den Fehler zu beheben, erstellen Sie eine neue Protokollgruppe für die Aufgabe.

Um die Fehler für Amazon ECS-Aufgaben zu beheben, die nicht gestartet werden können, verwenden Sie das AWSSupport-TroubleshootECSTaskFailedToStart-Runbook. Lesen Sie dann die entsprechenden Schritte zur Fehlerbehebung für Ihr Problem.

Behebung

Suchen Sie nach einer Aufgabe, die nicht gestartet werden konnte

Wichtig:

  • Verwenden Sie das AWSSupport-TroubleshootECSTaskFailedToStart-Runbook in derselben AWS-Region, in der sich Ihre ECS-Clusterressourcen befinden.
  • Wenn Sie das Runbook verwenden, müssen Sie die ID der zuletzt fehlgeschlagenen Aufgabe verwenden. Wenn die fehlgeschlagene Aufgabe Teil eines Amazon-ECS-Service ist, verwenden Sie die zuletzt ausgefallene Aufgabe im Service. Die fehlgeschlagene Aufgabe muss während der Automatisierung in ECS:DescribeTasks sichtbar sein. Standardmäßig sind gestoppte ECS-Aufgaben 1 Stunde lang sichtbar, nachdem sie den Status Stopped erreicht haben. Die Verwendung der ID der zuletzt fehlgeschlagenen Aufgabe verhindert, dass die Bereinigung des Aufgabenstatus die Analyse während der Automatisierung unterbricht.

Anweisungen zum Initiieren des Runbooks finden Sie unter AWSSupport-TroubleshootECSTaskFailedToStart. Führen Sie basierend auf der Ausgabe der Automatisierung einen der folgenden manuellen Schritte zur Fehlerbehebung aus.

Beheben Sie den Fehler

Um den ResourceInitialization-Fehler zu beheben, sehen Sie sich die folgenden Lösungen an, um eine neue Protokollgruppe für die Aufgabe zu erstellen.

Wenn Sie nicht wissen, welche Protokollgruppe in der Aufgabendefinition definiert ist und einen Fehler zurückgibt, führen Sie den folgenden Befehl aus:

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

Die Ausgabe beschreibt die Protokollgruppe, die Sie in CloudWatch neu erstellen müssen.

Erstellen Sie eine CloudWatch-Protokollgruppe in der Konsole

  1. Öffnen Sie die CloudWatch-Konsole.
  2. Wählen Sie in der Navigationsleiste die Region aus, in der sich der Amazon ECS-Cluster befindet.
  3. Wählen Sie im Navigationsbereich Protokolle und dann Protokollgruppen aus.
  4. Wählen Sie im Fenster Protokollgruppen die Option Protokollgruppe erstellen aus.

Erstellen Sie eine CloudWatch-Protokollgruppe mit AWS CLI

Erstellen Sie eine CloudWatch-Protokollgruppe mit dem AWS Command Line Interface (AWS CLI)-Befehl create-log-group. Der folgende Beispielbefehl erstellt eine Protokollgruppe mit dem Namen mylogs:

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version des AWS CLI verwenden.

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

Verwenden Sie die Autokonfigurationsfunktion in der Amazon-ECS-Konsole

Die Option zur automatischen Konfiguration verwendet den Namen der Aufgabendefinitionsfamilie mit ecs als Präfix, um eine Protokollgruppe für Sie zu erstellen. Das folgende Beispiel spezifiziert eine Protokollkonfiguration in Ihrer Aufgabendefinition:

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

Sie können mit den folgenden Schritten auch eine benutzerdefinierte Protokollgruppe erstellen:

  1. Geben Sie die Optionen für die Protokollkonfiguration an.
  2. Fügen Sie den Schlüssel awslogs-create-group mit dem Wert true hinzu. Dadurch wird die Protokollgruppe für Sie erstellt.

Das folgende Beispiel spezifiziert eine Protokollkonfiguration in Ihrer Aufgabendefinition mit festgelegten Optionen:

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

Hinweis: Die verwaltete AWS Identity and Access Management (IAM)-Richtlinie AmazonECSTaskExecutionRolePolicy, beinhaltet keine Berechtigungen logs:CreateLogGroup. Um die Option awslogs-create-group zu verwenden, fügen Sie logs:CreateLogGroup als Inline-IAM-Richtlinie hinzu.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr