Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configuration d'Amazon ECS pour écouter CloudWatch les événements
Découvrez comment configurer une fonction Lambda simple qui écoute les événements des tâches et les enregistre dans un flux de CloudWatch journal des journaux.
Prérequis : Configuration d'un cluster test
Si vous ne possédez pas de cluster en cours d'exécution à partir duquel capturer des événements, suivez les étapes dans Création d'un cluster Amazon ECS pour le type de lancement Fargate pour en créer un. À la fin de ce didacticiel, vous exécutez une tâche sur ce cluster pour tester que la configuration de votre fonction Lambda est correcte.
Étape 1 : Créer la fonction Lambda
Au cours de cette procédure, vous allez créer une fonction Lambda simple à utiliser comme cible pour les messages de flux d'événements Amazon ECS.
Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/
. -
Sélectionnez Create function (Créer une fonction).
-
Dans l'écran Author from scratch (Créer à partir de zéro), procédez comme suit :
-
Pour Name (Nom), saisissez une valeur.
-
Pour Runtime (Exécution), choisissez votre version de Python, par exemple, Python 3.9.
-
Pour Role (Rôle), choisissez Create a new role with basic Lambda permissions (Créer un nouveau rôle avec les autorisations Lambda de base).
-
-
Sélectionnez Create function (Créer une fonction).
-
Dans la section Code de fonction, modifiez l'exemple de code selon l'exemple suivant :
import json def lambda_handler(event, context): if event["source"] != "aws.ecs": raise ValueError("Function only supports input from events with a source type of: aws.ecs") print('Here is the event:') print(json.dumps(event))
Il s'agit d'une fonction Python 3.9 simple qui imprime les événements envoyés par Amazon ECS. Si tout est correctement configuré, à la fin de ce didacticiel, vous verrez que les détails de l'événement apparaissent dans le flux de log CloudWatch Logs associé à cette fonction Lambda.
-
Choisissez Save (Enregistrer).
Étape 2 : Enregistrer une règle d'événement
Ensuite, vous créez une règle d' CloudWatch événements qui capture les événements de tâches provenant de vos clusters Amazon ECS. Cette règle capture tous les événements provenant de tous les clusters du compte dans lequel il est défini. Les messages de tâche eux-mêmes contiennent des informations sur la source de l'événement, y compris le cluster sur lequel elle réside, que vous pouvez utiliser pour filtrer et trier les événements par programmation.
Note
Lorsque vous utilisez la règle AWS Management Console pour créer un événement, la console ajoute automatiquement les autorisations IAM nécessaires pour autoriser CloudWatch Events à appeler votre fonction Lambda. Si vous créez une règle d'événement à l'aide du AWS CLI, vous devez accorder cette autorisation de manière explicite. Pour plus d'informations, consultez les sections Événements sur Amazon EventBridge et Modèles d' EventBridge événements Amazon dans le guide de EventBridge l'utilisateur Amazon.
Pour acheminer des événements vers votre fonction Lambda
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans le panneau de navigation, choisissez Events (Événements), Rules (Règles), Create rule (Créer une règle).
-
Pour Event Source (Source de l'événement), choisissez ECS comme source d'événement. Par défaut, la règle s'applique à tous les événements Amazon ECS pour tous vos groupes Amazon ECS. Sinon, vous pouvez sélectionner des événements spécifiques ou un groupe Amazon ECS spécifique.
-
Pour Targets (Cibles), choisissez Add target (Ajouter une cible), pour Target type (Type de cible), choisissez Lambda function (Fonction Lambda), puis sélectionnez votre fonction Lambda.
-
Choisissez Configure details (Configurer les détails).
-
Pour Rule definition (Définition de règle), saisissez un nom et une description pour la règle, puis choisissez Create rule (Créer une règle).
Étape 3 : Créer une définition de tâche
Créez une définition de tâche.
Ouvrez la console à la https://console.aws.amazon.com/ecs/version 2
. -
Dans le panneau de navigation, sélectionnez Task Definitions (Définition des tâches).
-
Choisissez Create new Task Definition (Créer une nouvelle définition de tâche), puis Create new revision with JSON (Créer une nouvelle révision avec JSON).
-
Copiez et collez l'exemple de définition de tâche suivant dans la zone, puis choisissez Save (Enregistrer).
{ "containerDefinitions": [ { "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "entryPoint": [ "sh", "-c" ], "essential": true, "image": "httpd:2.4", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample-fargate-app", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ] } ], "cpu": "256", "executionRoleArn": "arn:aws:iam::
012345678910
:role/ecsTaskExecutionRole", "family": "fargate-task-definition", "memory": "512", "networkMode": "awsvpc", "runtimePlatform": { "operatingSystemFamily": "LINUX" }, "requiresCompatibilities": [ "FARGATE" ] } -
Sélectionnez Create (Créer).
Étape 4 : Test de la règle
Enfin, vous créez une règle d' CloudWatch événements qui capture les événements de tâches provenant de vos clusters Amazon ECS. Cette règle capture tous les événements provenant de tous les clusters du compte dans lequel il est défini. Les messages de tâche eux-mêmes contiennent des informations sur la source de l'événement, y compris le cluster sur lequel elle réside, que vous pouvez utiliser pour filtrer et trier les événements par programmation.
Pour tester la règle
Ouvrez la console à la https://console.aws.amazon.com/ecs/version 2
. -
Choisissez Task definitions (Définitions des tâches).
-
Choisissez console-sample-app-static, puis choisissez Déployer, Exécuter une nouvelle tâche.
-
Pour Cluster, choisissez par défaut, puis choisissez Deploy (Déployer).
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans le volet de navigation, choisissez Logs et sélectionnez le groupe de journaux pour votre fonction Lambda (par exemple,
my-function
/aws/lambda/). -
Sélectionnez un flux de journaux pour afficher les données d'événement.