

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
<a name="ecs_cwet"></a>

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
<a name="cwet_step_1"></a>

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 les charges de travail Fargate](create-cluster-console-v2.md) 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
<a name="cwet_step_2"></a>

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. 

1. Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Sélectionnez **Create function** (Créer une fonction). 

1. Dans l'écran **Author from scratch** (Créer à partir de zéro), procédez comme suit :

   1. Pour **Name** (Nom), saisissez une valeur. 

   1. Pour **Runtime** (Exécution), choisissez votre version de Python, par exemple, **Python 3.9**.

   1. 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).

1. Sélectionnez **Create function** (Créer une fonction).

1. 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.

1. Choisissez **Enregistrer**.

## Étape 2 : Enregistrer une règle d'événement
<a name="cwet_step_3"></a>

 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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) [et Modèles d' EventBridge événements](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) Amazon dans le *guide de EventBridge l'utilisateur Amazon*.

**Pour acheminer des événements vers votre fonction Lambda**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, choisissez **Events** (Événements), **Rules** (Règles), **Create rule** (Créer une règle).

1. 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.

1. 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.

1. Choisissez **Configure details** (Configurer les détails).

1. 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
<a name="cwet_step_task-def"></a>

Créez une définition de tâche.

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, sélectionnez **Task Definitions** (Définition des tâches).

1. 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).

1. 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": "public.ecr.aws/docker/library/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" 
       ]
   }
   ```

1. Choisissez **Créer**.

## Étape 4 : Test de la règle
<a name="cwet_step_4"></a>

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

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Choisissez **Task definitions** (Définitions des tâches).

1. Choisissez **console-sample-app-static**, puis choisissez **Déployer**, **Exécuter une nouvelle tâche**.

1. Pour **Cluster**, choisissez par défaut, puis choisissez **Deploy** (Déployer).

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le volet de navigation, choisissez **Logs et sélectionnez le groupe de journaux** pour votre fonction Lambda (par exemple, ***my-function*/aws/lambda/**).

1. Sélectionnez un flux de journaux pour afficher les données d'événement. 