Mes journaux de conteneur Amazon Elastic Container Service (Amazon ECS) n'apparaissent pas dans Amazon CloudWatch Logs comme prévu.
Résolution
Modifier le pilote de journal awslogs
Ajoutez le paramètre logConfiguration sur le pilote de journal awslogs dans votre définition de tâche. Pour les tâches Amazon ECS comportant plusieurs conteneurs, configurez le paramètre logConfiguration pour chaque conteneur.
Si vous disposez d’un type de lancement Amazon Elastic Compute Cloud (Amazon EC2), mettez à jour votre instance de conteneur Amazon ECS vers la version 1.9.0 ou ultérieure.
Si votre instance de conteneur n'utilise pas l'Amazon Machine Image (AMI) optimisée pour Amazon ECS, exécutez la variable d'environnement suivante pour démarrer l'agent de conteneur :
ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'
Remarque : Spécifiez le pilote de journal awslogs sur l'instance de conteneur.
Pour plus d’informations, consultez la section Installation de l’agent de conteneur Amazon ECS.
Ajouter les autorisations de rôle IAM nécessaires
Type de lancement AWS Fargate
Attachez la politique AmazonECSTaskExecutionRolePolicy à votre rôle Gestion des identités et des accès AWS (AWS IAM) d’exécution de tâches Amazon ECS. La politique inclut les autorisations logs:CreateLogStream et logs:PutLogEvents nécessaires. Vous pouvez également créer une politique IAM personnalisée et inclure les autorisations nécessaires.
Tâches de type de lancement Amazon EC2 sans rôle IAM d’exécution de tâches
Attachez la politique AmazonEC2ContainerServiceForec2Role au rôle IAM de l'instance de conteneur. La politique contient les autorisations logs:CreateLogStream et logs:PutLogEvents nécessaires. Vous pouvez également créer une politique IAM personnalisée et inclure les autorisations nécessaires.
Tâches de type de lancement Amazon EC2 avec rôle IAM d'exécution de tâches
Pour la configuration de l'agent de conteneur, mettez à jour le paramètre ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE sur vrai.
Remarque : La valeur par défaut du paramètre de l'agent de conteneur est vrai sur les AMI optimisées pour Amazon ECS avec la version 1.16.0-1 ou ultérieure et faux sur Windows.
Vérifier la configuration du réseau
Si votre tâche utilise le pilote de journal awslogs dans un Amazon Virtual Private Cloud (Amazon VPC) sans passerelle Internet, créez un point de terminaison de VPC d'interface pour CloudWatch Logs. Sélectionnez com.amazonaws.Region.logs en tant que service.
Vérifier la configuration au niveau du journal du conteneur
Le pilote de journal awslogs transmet les flux STDOUT et STDERR I/O de Docker à CloudWatch Logs.
Pour configurer vos journaux, mettez à jour votre application pour envoyer les journaux aux flux STDOUT et STDERR I/O. Puis, lors de la création du conteneur, configurez le niveau de journalisation de l'application via une variable d'environnement ou un fichier de configuration.
Informations connexes
Outils de surveillance pour Amazon ECS
Comment puis-je résoudre les problèmes liés aux journaux de conteneur manquants pour Amazon ECS ou Amazon EKS ?
Envoyer les journaux Amazon ECS à CloudWatch