Agence web » Actualités du digital » Comment utiliser CloudWatch Events pour AWS Automation

Comment utiliser CloudWatch Events pour AWS Automation

comment-automatiser-la-creation-de-machines-virtuelles-aws-a-partir-6689232

CloudWatch est couramment utilisé pour le traitement des journaux et la surveillance de vos ressources AWS, mais il dispose également d'outils puissants d'automatisation à partir de votre compte. Nous allons montrer comment configurer et utiliser CloudWatch Events.

Qu'est-ce que CloudWatch Events?

CloudWatch Events est un service d'AWS qui mappe essentiellement la cause à effet en utilisant les actions qui se produisent dans votre compte. Il peut acheminer les événements d'API, comme l'arrêt d'une instance EC2 ou le téléchargement d'un objet vers un compartiment S3, et les envoyer à d'autres services tels que les fonctions Lambda ou les files d'attente de messagerie.

À l'aide de règles simples, vous pouvez faire correspondre les événements en fonction du service dont ils proviennent. Les événements sont des objets JSON, envoyés à CloudWatch en raison d'actions qui se produisent dans votre compte. Par exemple, un événement pour mettre fin à une instance EC2 peut ressembler à ceci:

{
  "version": "0",
  "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
  "detail-type": "EC2 Instance State-change Notification",
  "source": "aws.ec2",
  "account": "111122223333",
  "time": "2017-12-22T18:43:48Z",
  "region": "us-west-1",
  "resources": (
    "arn:aws:ec2:us-west-1:123456789012:instance/ i-1234567890abcdef0"
  ),
  "detail": {
    "instance-id": " i-1234567890abcdef0",
    "state": "terminated"
  }
}

Vous pouvez écouter ces événements et les envoyer à d'autres services appelés cibles. Il peut s'agir de fonctions Lambda conçues pour gérer cette charge utile, une rubrique SNS, une file d'attente SQS ou d'autres actions telles que les tâches ECS et CodePipeline. Avec la possibilité d'acheminer vers Lambda, vous pouvez programmer toutes les fonctionnalités de votre choix, ce qui en fait une fonctionnalité très utile pour l'automatisation des comptes.

Par exemple, si vous souhaitez exécuter une tâche ECS, comme le traitement de photos ou de vidéos, chaque fois qu'un objet est téléchargé dans un compartiment S3, vous pouvez y parvenir assez facilement avec CloudWatch Events. Définissez simplement la source de l'événement pour qu'elle corresponde aux opérations PutObject et envoyez l'événement à une tâche ECS pour traitement.

De nombreux autres outils AWS utiliseront également les événements CloudWatch, vous pouvez donc déjà avoir défini des règles. Si vous utilisez CodePipeline, il utilise un événement CloudWatch pour surveiller le référentiel source pour les modifications et déclencher le pipeline CI / CD en réponse.

Les événements n'ont pas besoin d'être déclenchés par une action dans votre compte. Vous pouvez également définir l'événement pour qu'il s'exécute à un intervalle de temps fixe, agissant essentiellement comme cron d'AWS. Vous pouvez l'utiliser pour planifier l'exécution automatique des fonctions Lambda.

Configurer une règle d'événement

Depuis la console CloudWatch, cliquez sur «Règles» dans la barre latérale et créez une nouvelle règle.

comment-utiliser-cloudwatch-events-pour-aws-automation-cloudsavvy-it-1691448

À moins que vous ne souhaitiez que cet événement s’exécute automatiquement, définissez la source d’événement sur «Modèle d’événement». Vous pouvez choisir un nom de service ici pour filtrer les différents types d'événements.

Pour S3, vous pouvez choisir «Opérations au niveau de l'objet» et sélectionner un type d'opération spécifique, tel que PutObject. Vous pouvez également choisir un compartiment (ou des compartiments) spécifique par nom.

1595863214_977_comment-utiliser-cloudwatch-events-pour-aws-automation-cloudsavvy-it-9227729

Sur la droite, vous pouvez sélectionner la cible. Elle est définie par défaut sur "Fonction Lambda", il vous suffit de sélectionner une fonction conçue pour gérer l'événement.

1595863214_160_comment-utiliser-cloudwatch-events-pour-aws-automation-cloudsavvy-it-6346004

Pour Lambda, l'événement est transmis en tant que event variable. Vous pouvez l'utiliser pour accéder aux détails sur le PutObject opération, telle qu'une référence à l'objet lui-même que vous pouvez utiliser pour y accéder.

Si vous testez simplement CloudWatch Events, vous pouvez utiliser une fonction comme celle-ci pour simplement consigner l'événement qui lui est transmis. Vous trouverez les journaux de la fonction Lambda sous l'onglet "Surveillance" de la fonction.

'use strict';

exports.handler = (event, context, callback) => {
  console.log('LogCloudWatchEvent');
  console.log('Received event:', JSON.stringify(event, null, 2));
  callback(null, 'Finished');
};

Bien entendu, vous n'êtes pas limité aux fonctions Lambda. Pour un calcul plus intense, vous pouvez acheminer l'événement vers une tâche ECS, qui peut utiliser toute la puissance de Fargate et EC2 pour exécuter des applications conteneurisées.

1595863214_588_comment-utiliser-cloudwatch-events-pour-aws-automation-cloudsavvy-it-9308169

D'autres options sont également disponibles, généralement liées au routage de l'événement ailleurs, comme un flux Kinesis, une rubrique SNS ou une file d'attente SQS.

Les règles sont gérables à partir de la console CloudWatch, y compris un onglet de surveillance pour afficher des métriques sur la fréquence à laquelle la règle est appelée.

★★★★★