Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Comment envoyer les journaux de mes conteneurs vers plusieurs destinations dans Amazon ECS sur AWS Fargate ?
Je souhaite que mon conteneur d’applications qui s’exécute sur AWS Fargate transfère les journaux vers plusieurs destinations, telles qu’Amazon CloudWatch, Amazon Data Firehose ou Splunk.
Brève description
Une définition de tâche Amazon Elastic Container Service (Amazon ECS) vous permet de ne spécifier qu’un seul objet de configuration de journal pour un conteneur donné. Cette limite signifie que vous ne pouvez transférer les journaux que vers une seule destination. Pour transférer des journaux vers plusieurs destinations dans Amazon ECS sur Fargate, vous pouvez utiliser FireLens.
Remarque : FireLens fonctionne à la fois avec les redirecteurs de journaux Fluent Bit et Fluentd. La résolution suivante utilise Fluent Bit car Fluent Bit est plus économe en ressources que Fluentd.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Avant de commencer, assurez-vous de bien comprendre :
- Pour générer la définition de sortie Fluent Bit, FireLens utilise les paires clé-valeur spécifiées en tant qu’options dans l’objet logConfiguration à partir de la définition de tâche ECS. La destination vers laquelle FireLens achemine les journaux est spécifiée dans la section de définition [OUTPUT] d’un fichier de configuration Fluent Bit. Pour plus d’informations, consultez la section Sortie sur le site Web de Fluent Bit. Si vous ne spécifiez aucune option, aucune sortie n'est générée.
- FireLens crée un fichier de configuration en votre nom, mais vous pouvez également spécifier un fichier de configuration personnalisé. Vous pouvez héberger ce fichier de configuration dans Amazon Simple Storage Service (Amazon S3). Vous pouvez également créer une image Docker Fluent Bit personnalisée en ajoutant à l’image le fichier de configuration de sortie personnalisé.
- Vous pouvez utiliser Amazon ECS et Fargate pour extraire un fichier de configuration personnalisé depuis Amazon S3, sauf si vous avez besoin de plug-ins personnalisés pour Fluent Bit.
Créer un fichier de configuration de sortie personnalisé Fluent Bit et le télécharger sur Amazon S3
Créez un fichier de configuration Fluent Bit personnalisé appelé LogDestinations.conf avec les définitions [OUTPUT] de votre choix. Par exemple, le fichier de configuration inclut les configurations définies pour CloudWatch, Amazon Data Firehose et Splunk. La directive Correspondance achemine vos données. Lorsqu'Amazon ECS remplit la configuration Fluent Bit, il étiquette les flux d'entrée avec un nom généré automatiquement préfixé par le nom du conteneur. Le service de préfixe est utilisé dans l'exemple :
[OUTPUT] Name firehose Match service* region us-west-2 delivery_stream nginx-stream [OUTPUT] Name cloudwatch Match service* region us-east-1 log_group_name firelens-nginx-container log_stream_prefix from-fluent-bit auto_create_group true [OUTPUT] Name splunk Match service* Host 127.0.0.1 Splunk_Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx Splunk_Send_Raw On
Remarque : Les différentes destinations nécessitent la spécification de différents champs dans la définition [OUTPUT]. Pour des exemples, consultez amazon-ecs-firelens-examples sur le site Web de GitHub.
Pour télécharger ce fichier vers un compartiment Amazon S3 que vous contrôlez, exécutez la commande cp de l'AWS CLI :
aws s3 cp logDestinations.conf s3://example-bucket/logDestinations.conf
Créer des autorisations IAM
Créez des autorisations Gestion des identités et des accès AWS (AWS IAM) pour permettre à votre rôle de tâche d'acquérir le fichier de configuration S3. Autorisez votre rôle de tâche à acheminer vos journaux vers différentes destinations. Par exemple, si votre destination est Amazon Data Firehose, vous devez autoriser la tâche à appeler l’API firehose:PutRecordBatch.
Remarque : Fluent Bit prend en charge plusieurs plug-ins en tant que destinations de journalisation. Les destinations telles que CloudWatch et Kinesis nécessitent des autorisations qui incluent Logs:CreateLogGroup, Logs:CreateLogStream, Logs:DescribeLogStreams, Logs:PutLogEvents et Kinesis:PutRecords. Pour plus d’informations, consultez la section Autorisations pour CloudWatch et Kinesis sur le site Web de GitHub.
Dans l'exemple de politique IAM, le rôle de tâche permet à s3:GetObject d'accéder au fichier de configuration. Il est recommandé d'accorder à la tâche les autorisations nécessaires pour enregistrer la sortie de la tâche dans un autre groupe de journaux CloudWatch.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfigurationFileAccess", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::example-bucket/logDestinations.conf" }, { "Sid": "CloudWatchLogGroupPermissions", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-east-1:555555555555:log-group:firelens-log-router" }, { "Sid": "CloudWatchLogStreamPermissions", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-east-1:555555555555:log-group:firelens-log-router:log-stream:*" } ] }
Remarque : Pour plus d'informations sur la création d'un rôle IAM de tâches et les autorisations requises, consultez la section Rôle IAM d'exécution de tâches Amazon ECS.
L'exemple de rôle de tâche IAM accorde les autorisations requises pour les pilotes CloudWatch et Amazon Data Firehose utilisés dans l'exemple de destination :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DataFirehosePermissions", "Action": [ "firehose:PutRecordBatch" ], "Effect": "Allow", "Resource": "arn:aws:firehose:us-west-2:555555555555:deliverystream/nginx-stream" }, { "Sid": "CloudWatchLogGroupPermissions", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-east-1:555555555555:log-group:firelens-nginx-container" }, { "Sid": "CloudWatchLogStreamPermissions", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-east-1:555555555555:log-group:firelens-nginx-container:log-stream:*" } ] }
Créer la définition de la tâche
Dans la définition de votre tâche, utilisez l'image AWS for Fluent Bit pour inclure un conteneur essentiel supplémentaire. L'exemple exécute le conteneur nginx officiel. Utilisez l'interface de ligne de commande AWS ou la console Amazon ECS pour créer une définition de tâche complète :
{ "family": "firelens-example-task", "taskRoleArn": "arn:aws:iam::012345678901:role/exampleTaskRole", "taskExecutionRoleArn": "arn:aws:iam::444455556666:role/exampleTaskExecutionRole", "networkMode": "awsvpc", "requiresCompatibilities": ["FARGATE"], "cpu": "256", "memory": "512", "containerDefinitions": [ { "essential": true, "image": "public.ecr.aws/docker/library/nginx:latest", "name": "service_web_app", "logConfiguration": { "logDriver": "awsfirelens" } }, { "essential": true, "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:stable", "name": "log_router", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "firelens-log-router", "awslogs-region": "us-east-1", "awslogs-create-group": "true", "awslogs-stream-prefix": "firelens-router-logs" } }, "firelensConfiguration": { "type": "fluentbit", "options": { "config-file-type": "s3", "config-file-value": "arn:aws:s3:::example-bucket/logDestinations.conf" } } } ] }
Remarque : Pour résoudre les problèmes, l'exemple de configuration dirige la sortie du conteneur Fluent Bit vers un autre groupe de journaux CloudWatch sous un autre préfixe.
- Sujets
- Containers
- Langue
- Français

Contenus pertinents
- demandé il y a 9 mois
- demandé il y a 8 mois
- demandé il y a 3 ans
AWS OFFICIELA mis à jour il y a 10 mois
AWS OFFICIELA mis à jour il y a 2 ans
AWS OFFICIELA mis à jour il y a 3 ans