Perché i registri dei container Amazon ECS non vengono consegnati ad Amazon CloudWatch Logs?

Ultimo aggiornamento: 09/03/2022

Non riesco a trovare i registri dei container della mia attività Amazon Elastic Container Service (Amazon ECS) in Amazon CloudWatch Logs.

Breve descrizione

I registri dei container Amazon ECS non vengono consegnati a CloudWatch Logs per uno o più dei seguenti motivi:

  • Il driver di registro awslogs non è configurato correttamente nelle definizioni delle attività di Amazon ECS.
  • Il ruolo AWS Identity and Access Management (IAM) non dispone delle autorizzazioni necessarie.
  • Si sono verificati problemi con la configurazione di rete.
  • Il livello di registro per il container non è configurato correttamente.

Risoluzione

Il driver di registro awslogs non è configurato correttamente

  • Per inviare le informazioni del registro del container a CloudWatch Logs, devi configurare correttamente i container nelle tue attività. Assicurati di aver configurato correttamente il parametro logConfiguration quando definisci i parametri per il container. Se la definizione dell'attività di Amazon ECS riguarda più container, è necessario configurare questo parametro per ogni container.
  • Assicurati di aver aggiunto il driver di registro awslogs al parametro logConfiguration nella definizione dell'attività.
  • Per il tipo di lancio Amazon Elastic Compute Cloud (Amazon EC2), esegui questi controlli aggiuntivi:
    • Assicurati che la tua istanza di container Amazon ECS includa almeno la versione 1.9.0 dell'agente del container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta Aggiornamento dell'agente del container Amazon ECS.
    • Se non utilizzi l'AMI ottimizzata per Amazon ECS per le istanze di container, assicurati che il driver di registro awslogs sia specificato nell'istanza di container quando avvii l'agente utilizzando la seguente variabile di ambiente. Per maggiori informazioni, consulta la sezione Installazione dell'agente del container Amazon ECS.
ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

Il ruolo IAM non dispone delle autorizzazioni necessarie

  • Assicurati che il ruolo IAM per la tua istanza di container Amazon ECS disponga delle autorizzazioni logs:CreateLogStream e logs:PutLogEvents.
  • Per il tipo di lancio Fargate, utilizza il ruolo IAM per l'esecuzione delle attività di Amazon ECS con le autorizzazioni logs:CreateLogStream e logs:PutLogEvents. Per ulteriori informazioni, consulta la pagina Ruolo IAM per l'esecuzione delle attività di Amazon ECS.
  • Per il tipo di lancio Amazon EC2, verifica quanto segue:
    • Se non utilizzi il ruolo IAM per l'esecuzione delle attività di Amazon ECS nella definizione dell'attività, assicurati che le autorizzazioni logs:CreateLogStream e logs:PutLogEvents siano concesse sul ruolo IAM utilizzato dall'istanza di container.
    • Se utilizzi il ruolo IAM per l'esecuzione delle attività di Amazon ECS, assicurati che il valore del parametro dell'agente del container ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE sia impostato su true.
      Nota: quando utilizzi l'AMI ottimizzata per Amazon ECS con la versione 1.16.0 -1 o successiva del pacchetto ecs-init, il valore di default di questo parametro è true. In Windows, il valore di default di questo parametro false. Per ulteriori informazioni, consulta la sezione Configurazione dell'agente del container Amazon ECS.

Si sono verificati problemi con la configurazione di rete

Se il tuo Amazon Virtual Private Cloud (Amazon VPC) non dispone di un gateway Internet e le tue attività utilizzano il driver di registro awslogs per inviare le informazioni di registro a CloudWatch Logs, assicurati di aver creato un endpoint Amazon VPC di interfaccia per CloudWatch Logs. Per ulteriori informazioni, consulta Utilizzo di CloudWatch Logs con endpoint VPC di interfaccia.

Il livello di registro per il container non è configurato correttamente

Il driver di registro awslogs passa semplicemente i registri dei container, ovvero i flussi di I/O STDOUT e STDERR, da Docker a CloudWatch Logs. Pertanto, verifica che l'applicazione invii i registri ai flussi di I/O STDOUT e STDERR. Assicurati di impostare il livello di registro corretto per la tua applicazione durante la creazione del container. A seconda dell'applicazione, è possibile impostare il livello di registro tramite una variabile di ambiente o un file di configurazione.