Używanie funkcji Lambda z Amazon SNS

Amazon SNS to usługa służąca do powiadamiania push. W tym rozdziale wyjaśnimy działanie AWS Lambda i Amazon SNS na przykładzie, w którym wykonamy następujące czynności -

  • Utwórz temat w usłudze SNS i użyj AWS Lambda Dodaj tematy do CloudWatch

  • Wyślij wiadomość tekstową SNS na podany numer telefonu.

Przybory

Aby utworzyć temat w usłudze SNS i użyć AWS Lambda Dodaj tematy do CloudWatch, nie musimy wykonywać poniższych czynności -

  • Utwórz temat w SNS
  • Utwórz rolę dla uprawnień w IAM
  • Utwórz funkcję AWS Lambda
  • Opublikuj w temacie, aby aktywować wyzwalacz
  • Sprawdź szczegóły wiadomości w usłudze CloudWatch.

Aby wysłać SMS-a SNS na podany numer telefonu, musimy wykonać następujące czynności -

  • Dodaj kod w AWS Lambda, aby wysłać wiadomość na swój telefon.

Przykład

W tym przykładzie utworzymy temat w SNS. Po wprowadzeniu szczegółów w temacie do opublikowania uruchamiana jest AWS Lambda. Szczegóły tematu są rejestrowane w CloudWatch, a na telefon wysyłana jest wiadomość przez AWS Lambda.

Oto podstawowy schemat blokowy, który wyjaśnia to samo -

Utwórz temat w SNS

Będziesz musiał wykonać poniższe kroki, aby utworzyć temat w SNS -

Krok 1

Zaloguj się do konsoli AWS i przejdź do usługi SNS w Amazon, jak pokazano poniżej -

Krok 2

Kliknij Simple Notification Serwis i Create topic w tym.

Krok 3

Następnie musisz kliknąć Create new topic przycisk jak pokazano -

Krok 4

Wejdz do Topic name i Display name i kliknij Create topic. Na wyświetlaczu powinna pojawić się nazwa tematu w następujący sposób -

Utwórz rolę dla uprawnień w IAM

Aby stworzyć rolę do pracy z usługą AWS Lambda i SNS, musimy zalogować się do konsoli AWS. Następnie wybierz IAM z usług Amazon i kliknij rolę z lewej strony, jak pokazano poniżej.

Zwróć uwagę, że dodaliśmy zasady dotyczące SNS, Lambda i CloudWatch. Dodaj nazwę roli i kliknij przycisk Utwórz rolę, aby zakończyć proces tworzenia roli.

Utwórz funkcję AWS Lambda

W tej sekcji wyjaśnimy, jak utworzyć funkcję AWS Lambda przy użyciu nodejs jako środowiska wykonawczego.

W tym celu zaloguj się do konsoli AWS i wybierz AWS Lambda z usług AWS. Dodaj nazwę funkcji, szczegóły roli itp. I utwórz funkcję AWS Lambda, jak pokazano.

Dodaj wyzwalacz SNS

Aby dodać wyzwalacz SNS, wprowadź szczegóły konfiguracji SNS, jak pokazano -

Następnie wybierz SNS topic i Add wyzwalacz funkcji AWS Lambda, jak pokazano -

Następnie dodaj kod lambda AWS podany poniżej -

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

W powyższym kodzie event.Records[0].Sns.Messagepodaje dodane szczegóły wiadomości. Dodaliśmy dzienniki konsoli, aby zobaczyć je w CloudWatch. Teraz zapisz funkcję Lambda z wymaganą pamięcią i alokacją czasu.

Opublikuj w temacie, aby aktywować regułę

Przypomnij sobie, że utworzyliśmy już temat w SNS w kroku 1. Opublikujemy teraz w temacie i zobaczymy szczegóły w CloudWatch, które zostaną uruchomione przez AWS Lambda -

Opublikuj w temacie

Najpierw Wybierz nazwę tematu, który chcesz opublikować. KliknijPublish to topic przycisk -

Wejdz do Subject i Message szczegóły, jak pokazano poniżej -

Możesz także wybrać JSON format wiadomości do wysłania JSONstyl. KliknijPublish the message na końcu ekranu.

Sprawdź szczegóły wiadomości w usłudze CloudWatch

Zaloguj się do konsoli AWS i otwórz usługę CloudWatch. Kliknij logi po lewej stronie i wybierz logi dla utworzonej funkcji AWS Lambda. Możesz znaleźć następujący ekran dla dzienników z komunikatami utworzonymi, jak pokazano powyżej -

Dodaj kod w AWS Lambda, aby wysłać wiadomość na swój telefon

Tutaj użyje wiadomości tekstowych SNS do wysłania wiadomości na telefon za pomocą AWS Lambda. Możesz użyć następującego kodu, aby zaktualizować kod AWS Lambda w następujący sposób -

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

Dodaliśmy AWS SDK i usługę SNS do wysyłania wiadomości. Wiadomość z wydarzenia pochodząca z SNS wysyłana jest jako SMS na podany numer telefonu.

Obserwuj następujący kod, na przykład -

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

Wprowadź temat teraz, aby zobaczyć wiadomość w chmurze i numer telefonu podany powyżej.

Kliknij Publish messageopublikować wiadomość. Zobaczysz wiadomość pod numerem podanym w następujący sposób -