Come posso risolvere l'errore "ResourceInitializationError: failed to validate logger args" in Amazon ECS?

4 minuti di lettura
0

Quando eseguo un'attività in Amazon Elastic Container Service (Amazon ECS), si verifica un errore "ResourceInitializationError: failed to validate logger args".

Breve descrizione

Quando un'attività Amazon ECS non riesce a trovare il gruppo di log Amazon CloudWatch definito nell'attività definitionAmazon, Amazon ECS restituisce un errore ResourceInitialization. Viene visualizzato il seguente errore:

"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"

Per risolvere l'errore, crea un nuovo gruppo di log per l'attività.

Per risolvere gli errori relativi alle attività Amazon ECS che non si avviano, usa il runbook AWSSupport-TroubleshootECSTaskFailedToStart. Quindi, consulta i passaggi relativi alla risoluzione dei problemi pertinenti.

Risoluzione

Ricerca di un'attività che non si è avviata

Importante:

  • Usa il runbook AWSSupport-TroubleshootECSTaskFailedToStart nella stessa Regione AWS che contiene le risorse del tuo cluster ECS.
  • Quando si utilizza il runbook, è necessario usare l'ID dell'ultima attività non riuscita. Se l'attività non riuscita fa parte di un servizio Amazon ECS, utilizza l'ultima attività non riuscita nel servizio. L'attività non riuscita deve essere visibile in ECS:DescribeTasks durante l'automazione. Per impostazione predefinita, le attività ECS arrestate sono visibili per un’ora dopo il passaggio allo stato Arrestate. L'utilizzo dell'ID dell’ultima attività non riuscita impedisce che la pulizia dello stato dell'attività interrompa l'analisi durante l'automazione.

Per istruzioni su come avviare il runbook, consulta AWSSupport-TroubleshootECSTaskFailedToStart. In base all'output dell'automazione, utilizza una delle seguenti procedure manuali per risolvere i problemi.

Risoluzione dell’errore

Per risolvere l'errore ResourceInitialization, esamina le seguenti soluzioni in modo da creare un nuovo gruppo di log per l'attività.

Se non sai quale gruppo di log è specificato nella definizione dell'attività e restituisce un errore, esegui il seguente comando:

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

L'output descrive il gruppo di log che è necessario ricreare in CloudWatch.

Creazione di un gruppo di log CloudWatch nella console

  1. Apri la console CloudWatch.
  2. Dalla barra di navigazione, seleziona la Regione che contiene il cluster Amazon ECS.
  3. Nel pannello di navigazione, seleziona Log, quindi seleziona Gruppi di log.
  4. Nella finestra Gruppi di log, seleziona Crea gruppo di log.

Creazione di un gruppo di log CloudWatch utilizzando AWS CLI

Crea un gruppo di log CloudWatch con il comando create-log-group dell'interfaccia della linea di comando AWS (AWS CLI) . Il seguente comando di esempio crea un gruppo di log denominato mylogs:

Nota: se si verificano errori durante l'esecuzione dei comandi della linea di comando AWS, assicurati di utilizzare la versione più recente di AWS CLI.

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

Uso della funzionalità di configurazione automatica nella console Amazon ECS

L'opzione di configurazione automatica utilizza il nome della famiglia della definizione dell'attività con il prefisso ecs per creare un gruppo di log. L'esempio seguente specifica una configurazione di log nella definizione dell'attività:

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

Puoi anche creare un gruppo di log personalizzato con i seguenti passaggi:

  1. Specifica le opzioni di configurazione del log.
  2. Aggiungi la chiave awslogs-create-group con un valore true. In questo modo, verrà creato il gruppo di log.

L'esempio seguente specifica una configurazione di log nella definizione dell'attività con le opzioni impostate:

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

Nota: la policy AWS Identity and Access Management (IAM) gestita AmazonECSTaskExecutionRolePolicy non include le autorizzazioni logs:CreateLogGroup. Per utilizzare l'opzione awslogs-create-group, aggiungi logs:CreateLogGroup come policy IAM in linea.