Lambda İşlevini Amazon SNS ile Kullanma

Amazon SNS, push bildirimi için kullanılan bir hizmettir. Bu bölümde, AWS Lambda ve Amazon SNS'nin çalışmasını aşağıdaki eylemleri nerede gerçekleştirecek bir örnekle açıklayacağız:

  • SNS Hizmetinde Konu Oluşturun ve AWS Lambda'yı Kullanın CloudWatch'a Konu Ekleyin

  • Verilen telefon numarasına SNS metin mesajı gönderin.

Gereksinimler

SNS Hizmetinde Konu oluşturmak ve AWS Lambda'yı CloudWatch'a Eklemek için, aşağıda verilen adımları izlememiz gerekmez -

  • SNS'de Konu Oluşturun
  • IAM'de izin için Rol Oluşturun
  • AWS Lambda İşlevi Oluşturun
  • Tetikleyiciyi etkinleştirmek için konuya yayınlayın
  • CloudWatch hizmetindeki mesaj ayrıntılarını kontrol edin.

Verilen telefon numarasına SNS metin mesajı göndermek için aşağıdakileri yapmamız gerekir -

  • Telefonunuza mesaj göndermek için AWS Lambda'ya kod ekleyin.

Misal

Bu örnekte, SNS'de bir konu oluşturacağız. Ayrıntılar, yayınlanacak konuya girildiğinde, AWS Lambda tetiklenir. Konu ayrıntıları CloudWatch'a kaydedilir ve AWS Lambda tarafından telefona bir mesaj gönderilir.

İşte aynı şeyi açıklayan temel bir blok diyagramı -

SNS'de Konu Oluşturun

SNS'de konu oluşturmak için aşağıda verilen adımları izlemeniz gerekecek -

Aşama 1

AWS Console'da oturum açın ve aşağıda gösterildiği gibi Amazon'da SNS hizmetine gidin -

Adım 2

Tıklayın Simple Notification Servis ve Create topic içinde.

Aşama 3

Sonra tıklamalısın Create new topic düğmesi gösterildiği gibi -

4. adım

Giriş Topic name ve Display name ve tıklayın Create topic. Ekranda konu adını aşağıdaki gibi görmelisiniz -

IAM'de İzin için Rol Oluşturun

AWS Lambda ve SNS hizmetiyle çalışacak bir Rol oluşturmak için AWS konsolunda oturum açmamız gerekir. Ardından, Amazon hizmetlerinden IAM'yi seçin ve aşağıda gösterildiği gibi sol taraftan role tıklayın.

SNS, Lambda ve CloudWatch için politikalar eklediğimizi gözlemleyin. Rol adı ekleyin ve rol oluşturma sürecini tamamlamak için Rol oluştur düğmesini tıklayın.

AWS Lambda İşlevi Oluşturun

Bu bölümde, çalışma zamanı olarak nodejs kullanarak AWS Lambda işlevinin nasıl oluşturulacağını anlayalım.

Bu amaçla, AWS konsolunda oturum açın ve AWS hizmetlerinden AWS Lambda'yı seçin. İşlev adını, rol ayrıntılarını vb. Ekleyin ve gösterildiği gibi AWS Lambda işlevini oluşturun.

SNS Tetikleyicisi Ekle

SNS tetikleyicisi eklemek için, gösterildiği gibi SNS yapılandırma ayrıntılarını girin -

Ardından, seçin SNS topic ve Add gösterildiği gibi AWS Lambda işlevinin tetikleyicisi -

Ardından, aşağıda verilen AWS lambda kodunu ekleyin -

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);
};

Yukarıdaki kodda, event.Records[0].Sns.Messageeklenen mesaj detaylarını verir. Bunları CloudWatch'ta görmek için konsol günlükleri ekledik. Şimdi, Lambda işlevini gerekli bellek ve zaman ayırma ile kaydedin.

Tetikleyiciyi Etkinleştirmek için Konuya Yayınla

1. Adımda SNS'de zaten konu oluşturduğumuzu hatırlayın. Şimdi bu konuda yayınlayacağız ve AWS Lambda tarafından tetiklenecek olan CloudWatch'daki ayrıntıları göreceğiz -

Konuya Yayınla

Önce Yayınlamak istediğiniz konunun adını seçin. TıklamakPublish to topic düğmesi -

Giriş Subject ve Message ayrıntılar aşağıda gösterildiği gibidir -

Ayrıca seçebilirsiniz JSON gönderilecek mesaj biçimi JSONtarzı. TıklayınPublish the message Ekranın sonundaki düğmesine basın.

CloudWatch Hizmetinde Mesaj Ayrıntılarını Kontrol Edin

AWS konsolunda oturum açın ve CloudWatch hizmetini açın. Sol taraftaki günlüklere tıklayın ve oluşturulan AWS Lambda işlevi için günlükleri seçin. Yukarıda gösterildiği gibi oluşturulan mesajların bulunduğu günlükler için aşağıdaki ekranı bulabilirsiniz -

Telefonunuza Mesaj Göndermek için AWS Lambda'ya Kod Ekleyin

Burada, AWS Lambda'yı kullanarak telefonda mesaj göndermek için SNS Metin mesajlaşma kullanılacaktır. AWS Lambda kodunu aşağıdaki gibi güncellemek için aşağıdaki kodu kullanabilirsiniz:

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);
      }	
   });
};

Mesaj göndermek için kullanmak üzere AWS SDK ve SNS hizmetini ekledik. SNS'den gelen olaydan gelen mesaj, verilen telefon numarasına kısa mesaj olarak gönderilir.

Örneğin aşağıdaki kodu inceleyin -

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

Cloudwatch'daki mesajı ve yukarıda verilen telefon numarasını görmek için konuyu şimdi girin.

Tıklayın Publish messagemesajı yayınlamak için. Aşağıdaki gibi verilen telefon numarasında bir mesaj görüyorsunuz -