Utilisation de la fonction Lambda avec Amazon SNS

Amazon SNS est un service utilisé pour les notifications push. Dans ce chapitre, nous expliquerons le fonctionnement d'AWS Lambda et d'Amazon SNS à l'aide d'un exemple où effectueront les actions suivantes -

  • Créer une rubrique dans le service SNS et utiliser AWS Lambda Ajouter des rubriques à CloudWatch

  • Envoyez un message texte SNS sur le numéro de téléphone donné.

Conditions requises

Pour créer une rubrique dans le service SNS et utiliser AWS Lambda Ajouter des rubriques à CloudWatch, nous n'avons pas besoin de suivre les étapes ci-dessous:

  • Créer un sujet dans SNS
  • Créer un rôle pour l'autorisation dans IAM
  • Créer une fonction AWS Lambda
  • Publier dans le sujet pour activer le déclencheur
  • Vérifiez les détails du message dans le service CloudWatch.

Pour envoyer un message texte SNS sur le numéro de téléphone indiqué, nous devons procéder comme suit -

  • Ajoutez du code dans AWS Lambda pour envoyer un message sur votre téléphone.

Exemple

Dans cet exemple, nous allons créer une rubrique dans SNS. Lorsque les détails sont saisis dans la rubrique à publier, AWS Lambda est déclenché. Les détails du sujet sont consignés dans CloudWatch et un message est envoyé sur le téléphone par AWS Lambda.

Voici un schéma de principe de base qui explique la même chose -

Créer un sujet dans SNS

Vous devrez suivre les étapes ci-dessous pour créer un sujet dans SNS -

Étape 1

Connectez-vous à AWS Console et accédez au service SNS sur Amazon comme indiqué ci-dessous -

Étape 2

Cliquez sur Simple Notification Service et Create topic dedans.

Étape 3

Ensuite, vous devez cliquer Create new topic bouton comme indiqué -

Étape 4

Entrer le Topic name et Display name et cliquez sur Create topic. Vous devriez voir le nom du sujet à l'écran comme suit -

Créer un rôle pour l'autorisation dans IAM

Pour créer un rôle pour fonctionner avec AWS Lambda et le service SNS, nous devons nous connecter à la console AWS. Ensuite, sélectionnez IAM à partir des services Amazon et cliquez sur rôle à gauche comme indiqué ci-dessous.

Notez que nous avons ajouté des politiques pour SNS, Lambda et CloudWatch. Ajoutez un nom de rôle et cliquez sur le bouton Créer un rôle pour terminer le processus de création de rôle.

Créer une fonction AWS Lambda

Dans cette section, voyons comment créer une fonction AWS Lambda en utilisant nodejs comme runtime.

À cette fin, connectez-vous à la console AWS et choisissez AWS Lambda parmi les services AWS. Ajoutez le nom de la fonction, les détails du rôle, etc. et créez la fonction AWS Lambda comme indiqué.

Ajouter un déclencheur SNS

Pour ajouter un déclencheur SNS, entrez les détails de configuration SNS comme indiqué -

Ensuite, sélectionnez SNS topic et Add le déclencheur de la fonction AWS Lambda comme indiqué -

Ensuite, ajoutez le code lambda AWS donné ci-dessous -

exports.handler = function(event, context, callback) {
   console.log("AWS lambda and SNS trigger ");
   console.log(event);
   const sns = event.Records[0].Sns.Message;
   console.log(sns)
   callback(null, sns);
};

Dans le code ci-dessus, event.Records[0].Sns.Messagedonne les détails du message ajoutés. Nous avons ajouté des journaux de console pour les voir dans CloudWatch. Maintenant, enregistrez la fonction Lambda avec la mémoire et l'allocation de temps requises.

Publier dans le sujet pour activer le déclencheur

Rappelez-vous que nous avons déjà créé un sujet dans SNS à l'étape 1. Nous allons maintenant publier dans le sujet et voir les détails dans CloudWatch qui seront déclenchés par AWS Lambda -

Publier dans le sujet

Sélectionnez d'abord le nom du sujet que vous souhaitez publier. Cliquer surPublish to topic bouton -

Entrer le Subject et Message détails comme indiqué ci-dessous -

Vous pouvez également sélectionner JSON format de message à envoyer JSONstyle. Cliquez surPublish the message bouton à la fin de l'écran.

Vérifier les détails du message dans le service CloudWatch

Connectez-vous à la console AWS et ouvrez le service CloudWatch. Cliquez sur les journaux sur le côté gauche et sélectionnez les journaux pour la fonction AWS Lambda créée. Vous pouvez trouver l'affichage suivant pour les journaux avec les messages créés comme indiqué ci-dessus -

Ajouter un code dans AWS Lambda pour envoyer un message sur votre téléphone

Ici, vous utiliserez la messagerie texte SNS pour envoyer un message sur le téléphone à l'aide d'AWS Lambda. Vous pouvez utiliser le code suivant pour mettre à jour le code AWS Lambda comme suit:

const aws =  require("aws-sdk");
const sns = new aws.SNS({
   region:'us-east-1'
});
exports.handler = function(event, context, callback) {
   console.log("AWS lambda and SNS trigger ");
   console.log(event);
   const snsmessage = event.Records[0].Sns.Message;
   console.log(snsmessage);
   sns.publish({
      Message: snsmessage,
      PhoneNumber: '+911212121212'
   }, function (err, data) {
      if (err) {
         console.log(err);
         callback(err, null);
      } else {
         console.log(data);
         callback(null, data);
      }	
   });
};

Nous avons ajouté AWS SDK et le service SNS à utiliser pour envoyer un message. Le message de l'événement provenant de SNS est envoyé sous forme de message texte sur le numéro de téléphone indiqué.

Observez le code suivant par exemple -

sns.publish({
   Message: snsmessage,
   PhoneNumber: '+911212121212'
}, function (err, data) {
   if (err) {
      console.log(err);
      callback(err, null);
   } else {
      console.log(data);
      callback(null, data);
   }	
});

Entrez le sujet maintenant pour voir le message dans cloudwatch et le numéro de téléphone indiqué ci-dessus.

Cliquez sur Publish messagepour publier le message. Vous voyez un message sur le numéro de téléphone indiqué comme suit -