Wenn ich eine Aufgabe in Amazon Elastic Container Service (Amazon ECS) ausführe, erhalte ich den Fehler „ResourceInitializationError: Logger-Args konnten nicht validiert werden“.
Kurzbeschreibung
Wenn eine Amazon ECS-Aufgabe die Amazon CloudWatch-Protokollgruppe, die in der Aufgabe definition Amazon definiert ist, nicht finden kann, gibt Amazon ECS einen **ResourceInitialization-**Fehler zurück. Sie erhalten folgende Fehlermeldung:
„ResourceInitializationError: Logger-Argumente konnten nicht validiert werden: Stream erstellen wurde 1 Mal wiederholt: Cloudwatch-Protokollstream 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.
Lösung
Um den Fehler ResourceInitialization zu beheben, überprüfen Sie die folgenden Lösungen, 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.
CloudWatch-Protokollgruppe in der Konsole erstellen
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 linken Navigationsbereich Protokolle und dann Protokollgruppen aus.
4. Wählen Sie im Fenster Protokollgruppen die Option Protokollgruppe erstellen aus.
Erstellen einer CloudWatch-Protokollgruppe mit AWS CLI
Erstellen Sie eine CloudWatch-Protokollgruppe mit dem Befehl create-log-group AWS Command Line Interface (AWS CLI). Mit dem folgenden Beispielbefehl wird eine Protokollgruppe namens mylogs erstellt:
Hinweis: Wenn beim Ausführen von AWS-CLI-Befehlen Fehler gemeldet werden, dann stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.
aws logs create-log-group --log-group-name mylogs
Automatische Konfigurationsfunktion in der Amazon-ECS-Konsole verwenden
Die Option zur automatischen Konfiguration erstellt in Ihrem Namen eine Protokollgruppe, wobei der Name der Aufgabendefinitionsfamilie mit ecs als Präfix verwendet wird. Das folgende Beispiel gibt eine Protokollkonfiguration in Ihrer Aufgabendefinition an.
{
"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 auch eine benutzerdefinierte Protokollgruppe mit den folgenden Schritten erstellen:
1. Geben Sie die Protokollkonfigurationsoptionen an.
- Fügen Sie den Schlüssel awslogs-create-group mit dem Wert wahr hinzu. Dadurch wird die Protokollgruppe in Ihrem Namen erstellt.
Das folgende Beispiel gibt eine Protokollkonfiguration in Ihrer Aufgabendefinition mit eingestelltem Optionen an.
{
"containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "example_container",
"awslogs-region": "eu-west-1",
"awslogs-create-group": "true",
"awslogs-stream-prefix": "example"
}
}
}
]
}
Hinweis: Verwaltete AWS-Identity-and-Access-Management-Richtlinie (IAM) AmazonECSTaskExecutionRolePolicy enthält keine **logs:CreateLogGroup-**Berechtigungen. Um die Option awslogs-create-group zu verwenden, fügen Sie logs:CreateLogGroup als Inline-IAM-Richtlinie hinzu.