Comment puis-je automatiser des tâches avec Lambda ?

Date de la dernière mise à jour : 14/10/2019

Je souhaite utiliser AWS Lambda pour automatiser des tâches dans mon compte AWS. Comment puis-je procéder ?

Brève description

Il existe plusieurs services AWS que vous pouvez intégrer à Lambda pour appeler une fonction selon un calendrier ou en réponse à certains événements. Les notifications d'événementsAmazon CloudWatch Events et Amazon Simple Storage Service (Amazon S3) sont quelques-uns des services les plus couramment utilisés pour l'automatisation des tâches. Cet article propose, pour les deux méthodes, des exemples que vous pouvez utiliser comme guide pour votre cas d'utilisation.

Pour plus d'exemples, consultez Didacticiel : utilisation d'AWS Lambda avec des événements planifiés et Didacticiel : utilisation d'AWS Lambda avec Amazon S3.

Remarque : CloudWatch et Amazon S3 peuvent automatiquement mettre à jour le rôle d'exécution de votre fonction Lambda, notamment en ajoutant l'accès requis à l'aide de stratégies basées sur les ressources. Toutefois, certains services AWS ne le font pas automatiquement. De même, d'autres processus peuvent également modifier le rôle d'exécution de votre fonction et l'empêcher d'appeler normalement. Dans ce cas, ajoutez manuellement des autorisations pour le service que vous intégrez à Lambda.

Résolution

Création d'une fonction Lambda

Suivez ces étapes témoins pour créer une fonction simple qui journalise les entrées dans Amazon CloudWatch Logs. Cette fonction sera la cible des événements que vous configurez. Vous pouvez remplacer l'exemple de code de fonction par votre propre code pour la tâche que vous souhaitez automatiser dans votre cas d'utilisation.

Remarque : vous avez aussi la possibilité de créer une fonction Lambda en créant et en chargeant votre propre package de déploiement.

1.    Ouvrez la console Lambda.

2.    Si vous n'êtes pas un habitué de Lambda, choisissez « Get Started Now » (Mise en route). Dans le cas contraire, choisissez « Create function » (Créer une fonction). La page « Create function » (Créer une fonction) s'ouvre et propose l'option « Author from scratch » (Créer à partir de zéro).

3.    Lorsque l'option « Author from scratch » (Créer à partir de zéro) est sélectionnée, allez sous « Basic information » (Informations de base) et procédez comme suit :
Pour « Function name » (Nom de la fonction), saisissez un nom.
Pour « Runtime » (Exécution), choisissez Node.js 10.x.

4.    Sous « Permissions » (Autorisations), agrandissez la fenêtre « Choose and create an execution role » (Choisir ou créer un rôle d'exécution), puis effectuez l'une des actions suivantes :
Si vous utilisez Lambda pour la première fois, choisissez « Create a new role with basic Lambda permissions » (Créer un nouveau rôle avec les autorisations Lambda de base).
Si vous avez déjà créé un rôle d'exécution Lambda que vous souhaitez utiliser, choisissez « Use an existing role » (Utiliser un rôle existant).
Si vous souhaitez créer un rôle d'exécution à l'aide d'un modèle de stratégie gérée AWS choisissez « Create a new role from AWS policy templates » (Créer un nouveau rôle à partir des modèles de stratégie AWS), saisissez un nom, puis choisissez un modèle de stratégie.

5.    Choisissez « Create function » (Créer une fonction).

6.    Dans le volet Configuration sous « Function code » (Code de fonction), collez cet exemple de code de fonction dans le volet de l'éditeur:

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

7.    Sélectionnez « Save » (Enregistrer).

Pour plus d'informations, consultez Créer une fonction Lambda avec la console.

Créer les règles CloudWatch Events

Utilisez CloudWatch Events pour créer des règles qui se déclenchent selon un calendrier ou qui se déclenchent en réponse à un événement. Pour plus d'informations, consultez Mise en route avec Amazon CloudWatch Events.

Événements planifiés

Pour effectuer des opérations avec une durée spécifique et sans aucune entrée, suivez les instructions de Création d'une règle CloudWatch Events qui se déclenche selon un calendrier. Spécifiez une planification pour la fréquence ou le moment où vous souhaitez que votre tâche automatisée s'exécute. Ajoutez la fonction Lambda que vous avez créée comme cible à déclencher en réponse à l'événement.

Une fois que vous avez créé la règle, votre fonction Lambda est automatiquement appelée avec la durée que vous avez définie. Si vous avez utilisé l'exemple de code de fonction, un flux de journaux provenant de Lambda est renseigné dans CloudWatch comme prévu.

Remarque : pour obtenir un autre exemple, consultez Didacticiel : planifier des fonctions AWS Lambda à l'aide de CloudWatch Events.

Événements de service

Pour faire des choses en réponse à un événement généré par un service AWS, suivez les instructions de Création d'une règle CloudWatch Events qui se déclenche sur un événement. Pour cet exemple de configuration, pour « Service Name » (Nom du service), choisissez EC2. Pour « Event Type » (Type d'événement), choisissez « EC2 Instance State-change Notification » (Notification des modifications d'état de l'instance EC2). Ajoutez la fonction Lambda que vous avez créée comme cible.

Remarque : pour plus d'informations, consultez Modèles d'événements dans CloudWatch Events et Exemples d'événements CloudWatch Events provenant des services pris en charge.

Une fois que vous avez créé la règle, votre fonction Lambda est appelée pour chaque occurrence du modèle d'événement que vous avez défini.

Pour cet exemple, vous pouvez tester la règle en provoquant un changement d'état dans une instance Amazon Elastic Compute Cloud (Amazon EC2). Si vous ne l'avez pas déjà fait, lancez une instance EC2. Lorsque vous créez l'instance, et lorsque vous arrêtez ou démarrez l'instance, Lambda envoie un flux de journaux à CloudWatch.

Remarque : l'utilisation d'une instance EC2 peut entraîner des frais sur votre compte AWS. Si vous créez une instance uniquement pour cet exemple, veillez à mettre fin à l'instance lorsque vous avez terminé afin d'éviter des frais récurrents.

Configuration d'une notification d'événement Amazon S3

Utilisez les notifications d'événements Amazon S3 pour déclencher votre fonction Lambda chaque fois que le type d'événement Amazon S3 pris en charge que vous spécifiez se produit dans votre compartiment S3. Pour obtenir plus d'informations et un exemple d'événement, consultez Utilisation d'AWS Lambda avec Amazon S3.

Si vous ne l'avez pas déjà fait, créez un compartiment S3. Ensuite, suivez les instructions de la section Activation et configuration des notifications d'événement. Pour cet exemple, pour « Events », (Événements), cochez la case « All object create events » (Tous les événements de création d'objets). Pour « Send to » (Envoyer à), choisissez « Lambda Function » (Fonction Lambda). Pour Lambda, choisissez la fonction Lambda que vous avez créée.

Pour tester la configuration, chargez un objet dans le compartiment S3. Si vous avez configuré un filtre « Prefix » (Préfixe) ou « Suffix » (Suffixe), assurez-vous que l'objet possède le bon préfixe ou le bon suffixe. Une fois le chargement terminé, votre fonction Lambda lance l'appel. Si vous avez utilisé l'exemple de code de fonction, un flux de journaux provenant de Lambda est renseigné dans CloudWatch. Ces journaux contiennent les métadonnées de l'objet événement à l'instar du nom du compartiment S3 et du nom de l'objet.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?