Menggunakan Fungsi Lambda dengan Amazon SNS

Amazon SNS adalah layanan yang digunakan untuk pemberitahuan push. Dalam bab ini, kami akan menjelaskan cara kerja AWS Lambda dan Amazon SNS dengan bantuan contoh di mana akan melakukan tindakan berikut -

  • Buat Topik di Layanan SNS dan gunakan AWS Lambda Tambahkan Topik ke CloudWatch

  • Kirim pesan teks SNS pada nomor telepon yang diberikan.

Persyaratan

Untuk membuat Topik di Layanan SNS dan menggunakan AWS Lambda Tambahkan Topik ke CloudWatch, kami tidak perlu mengikuti langkah-langkah yang diberikan di bawah ini -

  • Buat Topik di SNS
  • Buat Peran untuk izin di IAM
  • Buat Fungsi AWS Lambda
  • Publikasikan ke topik untuk mengaktifkan pemicu
  • Periksa detail pesan di layanan CloudWatch.

Untuk mengirim pesan teks SNS pada nomor telepon yang diberikan, kita perlu melakukan hal berikut -

  • Tambahkan kode di AWS Lambda untuk mengirim pesan ke telepon Anda.

Contoh

Dalam contoh ini, kami akan membuat topik di SNS. Saat detail dimasukkan ke topik untuk dipublikasikan, AWS Lambda dipicu. Detail topik dicatat di CloudWatch dan sebuah pesan dikirim ke telepon oleh AWS Lambda.

Berikut adalah diagram blok dasar yang menjelaskan hal yang sama -

Buat Topik di SNS

Anda harus mengikuti langkah-langkah yang diberikan di bawah ini untuk membuat topik di SNS -

Langkah 1

Masuk ke Konsol AWS dan buka layanan SNS di Amazon seperti yang ditunjukkan di bawah ini -

Langkah 2

Klik Simple Notification Layanan dan Create topic di dalamnya.

LANGKAH 3

Kemudian, Anda harus mengklik Create new topic tombol seperti yang ditunjukkan -

LANGKAH 4

Masukkan Topic name dan Display name dan klik Create topic. Anda akan melihat nama topik pada tampilan sebagai berikut -

Buat Peran untuk Izin di IAM

Untuk membuat Peran agar berfungsi dengan layanan AWS Lambda dan SNS, kita perlu masuk ke konsol AWS. Kemudian, pilih IAM dari layanan Amazon dan klik peran dari sisi kiri seperti yang ditunjukkan di bawah ini.

Perhatikan bahwa kami telah menambahkan kebijakan untuk SNS, Lambda, dan CloudWatch. Tambahkan nama peran dan klik tombol Buat peran untuk menyelesaikan proses pembuatan peran.

Buat Fungsi AWS Lambda

Di bagian ini, mari kita pahami cara membuat fungsi AWS Lambda menggunakan nodejs sebagai runtime.

Untuk tujuan ini, masuk ke konsol AWS dan pilih AWS Lambda dari layanan AWS. Tambahkan nama fungsi, detail peran, dll. Dan buat fungsi AWS Lambda seperti yang ditunjukkan.

Tambahkan Pemicu SNS

Untuk menambahkan pemicu SNS, masukkan detail konfigurasi SNS seperti yang ditunjukkan -

Lalu, pilih SNS topic dan Add pemicu fungsi AWS Lambda seperti yang ditunjukkan -

Kemudian, tambahkan kode lambda AWS yang diberikan di bawah ini -

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

Pada kode di atas, event.Records[0].Sns.Messagememberikan detail pesan yang ditambahkan. Kami telah menambahkan log konsol untuk melihatnya di CloudWatch. Sekarang, simpan fungsi Lambda dengan memori dan alokasi waktu yang diperlukan.

Publikasikan ke Topik untuk Mengaktifkan Pemicu

Ingatlah bahwa kami telah membuat topik di SNS pada Langkah 1. Kami sekarang akan menerbitkan topik tersebut dan melihat detailnya di CloudWatch yang akan dipicu oleh AWS Lambda -

Publikasikan ke Topik

Pertama Pilih nama topik yang ingin Anda terbitkan. KlikPublish to topic tombol -

Masukkan Subject dan Message detail seperti yang ditunjukkan di bawah ini -

Anda juga bisa memilih JSON format pesan yang akan dikirim JSONgaya. KlikPublish the message tombol di ujung layar.

Periksa Detail Pesan di Layanan CloudWatch

Masuk ke konsol AWS dan buka layanan CloudWatch. Klik log di sisi kiri dan pilih log untuk fungsi AWS Lambda yang dibuat. Anda dapat menemukan tampilan berikut untuk log dengan pesan yang dibuat seperti yang ditunjukkan di atas -

Tambahkan Kode di AWS Lambda untuk Mengirim Pesan ke Telepon Anda

Di sini akan menggunakan perpesanan teks SNS untuk mengirim pesan di telepon menggunakan AWS Lambda. Anda dapat menggunakan kode berikut untuk memperbarui kode AWS Lambda sebagai berikut -

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

Kami telah menambahkan AWS SDK dan layanan SNS yang akan digunakan untuk mengirim pesan. Pesan dari acara yang datang dari SNS dikirim sebagai pesan teks di nomor telepon yang diberikan.

Perhatikan kode berikut misalnya -

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

Masukkan topik sekarang untuk melihat pesan di cloudwatch dan nomor telepon yang diberikan di atas.

Klik Publish messageuntuk mempublikasikan pesan tersebut. Anda melihat pesan di nomor telepon yang diberikan sebagai berikut -