Maison >interface Web >js tutoriel >Planifier des événements dans EventBridge avec Lambda

Planifier des événements dans EventBridge avec Lambda

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 01:36:11370parcourir

Schedule Events in EventBridge with Lambda

Dans cet article de blog, nous explorerons comment planifier des événements à l'aide d'AWS EventBridge Scheduler et d'AWS Lambda. Cette méthode est efficace et évolutive, garantissant que votre application peut gérer plusieurs événements planifiés sans créer un désordre de règles EventBridge individuelles. Allons-y !

Qu'est-ce qu'AWS EventBridge ?

AWS EventBridge est un service de bus d'événements sans serveur qui facilite la connexion d'applications à l'aide des données de vos propres applications, d'applications Software-as-a-Service (SaaS) intégrées et des services AWS. EventBridge fournit un flux de données en temps réel à partir de sources d'événements et achemine ces données vers des cibles telles qu'AWS Lambda, Amazon SNS, etc.

Qu'est-ce qu'AWS Lambda ?

AWS Lambda est un service de calcul sans serveur qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs. Vous pouvez déclencher les fonctions Lambda directement à partir d'autres services AWS, tels que S3, DynamoDB ou EventBridge, et passer automatiquement de quelques requêtes par jour à des milliers par seconde.

Conditions préalables

Avant de commencer, assurez-vous d'avoir les éléments suivants :

  1. Un compte AWS
  2. Connaissance de base de Node.js
  3. AWS CLI configuré sur votre machine

Étape 1 : configuration de votre environnement AWS

Création d'un rôle IAM

Tout d'abord, nous devons créer un rôle IAM qui permettra à AWS EventBridge Scheduler d'appeler votre fonction Lambda.

  1. Accédez à la console IAM : accédez à la console IAM, choisissez Rôles dans le volet de navigation de gauche, puis cliquez sur Créer un rôle.

  2. Sélectionnez une entité de confiance : choisissez Service AWS, sélectionnez Lambda et cliquez sur Suivant : Autorisations.

  3. Joindre les stratégies : joignez les stratégies gérées suivantes :

    • AWSLambdaBasicExecutionRole : fournit des autorisations d'exécution Lambda de base.
    • AmazonEventBridgeSchedulerFullAccess : permet à EventBridge Scheduler de gérer les plannings.
  4. Vérifier et créer : indiquez un nom pour le rôle, par exemple LambdaExecutionRole, vérifiez les paramètres et cliquez sur Créer un rôle.

  5. Mettre à jour la relation de confiance : Une fois le rôle créé, accédez à la page de détails du rôle. Sous l'onglet Relations de confiance, cliquez sur Modifier la relation de confiance. Mettez à jour la politique de confiance pour inclure le service programmer.amazonaws.com :

   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "scheduler.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }

Étape 2 : Création de la fonction Lambda

Nous allons créer une fonction Lambda qui traitera les événements planifiés.

  1. Accédez à la console Lambda : accédez à la console Lambda, cliquez sur Créer une fonction et choisissez Auteur à partir de zéro.

  2. Configurer la fonction Lambda : définissez le nom de la fonction sur processScheduledEvent, sélectionnez Node.js 16.x comme environnement d'exécution et utilisez le rôle existant que vous avez créé précédemment (LambdaExecutionRole). Cliquez sur Créer une fonction.

  3. Ajouter un code de fonction : Remplacez le code par défaut par votre logique pour traiter l'événement. Par exemple, vous pouvez enregistrer les détails de l'événement ou effectuer des actions spécifiques basées sur les données de l'événement :

   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "scheduler.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
  1. Déployer la fonction : cliquez sur Déployer pour enregistrer les modifications.

Étape 3 : Planification de l'événement

Maintenant, écrivons le code pour planifier un événement à l'aide d'AWS EventBridge Scheduler.

Tout d'abord, installez les modules AWS SDK nécessaires :

   exports.handler = async (event) => {
     const eventDetails = event;

     // Your logic to process the event
     console.log("Processing scheduled event:", eventDetails);

     // Example: Process event
     // processEvent(eventDetails);

     return {
       statusCode: 200,
       body: JSON.stringify('Event processed successfully'),
     };
   };

Voici un résumé des étapes de mise en œuvre de la fonction de planification :

Extraire les détails de l'événement

Extrayez les détails de l'événement à partir de l'entrée de votre application. Voici un exemple :

npm install @aws-sdk/client-scheduler @aws-sdk/client-lambda

Convertir IST en UTC

Convertissez l'heure programmée de IST (heure standard indienne) en UTC (temps universel coordonné).

const eventDetails = {
  name: "TEST-EVENT-01",
  userId: "USER123",
  eventId: "EVENT-001",
  eventTime: '2024-12-17T18:05:00+05:30' // IST time in ISO format
};

Formater la chaîne d'heure UTC

Assurez-vous que la chaîne d'heure UTC est dans le format correct requis par EventBridge Scheduler (aaaa-MM-jjTHH:mm:ssZ).

const istTime = new Date(eventDetails.eventTime); // IST time
const utcTime = new Date(istTime.getTime() - 5.5 * 60 * 60 * 1000); // Convert to UTC

Créer un planning EventBridge

Créez une planification EventBridge à l'aide du SDK AWS, en spécifiant l'ARN de la fonction Lambda comme cible et en incluant les détails de l'événement en entrée.

const utcString = utcTime.toISOString().split('.')[0] + 'Z';

Conclusion

Dans cet article de blog, nous avons parcouru le processus de configuration d'un événement planifié à l'aide d'AWS EventBridge Scheduler et de Lambda. Cette approche garantit que notre application peut gérer plusieurs événements planifiés de manière efficace et évolutive. Grâce à la puissance d'AWS, vous pouvez créer des fonctionnalités robustes qui améliorent l'expérience utilisateur et rationalisent les opérations.

Bon codage !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn