Usando a função Lambda com Amazon SNS

Amazon SNS é um serviço usado para notificações push. Neste capítulo, vamos explicar o funcionamento do AWS Lambda e do Amazon SNS com a ajuda de um exemplo onde realizaremos as seguintes ações -

  • Criar tópico no serviço SNS e usar AWS Lambda Adicionar tópicos ao CloudWatch

  • Envie uma mensagem de texto SNS no número de telefone fornecido.

Requisitos

Para criar Tópico no Serviço SNS e usar AWS Lambda Adicionar Tópicos ao CloudWatch, não precisamos seguir as etapas abaixo -

  • Criar Tópico no SNS
  • Criar papel para permissão no IAM
  • Criar função AWS Lambda
  • Publique no tópico para ativar o gatilho
  • Verifique os detalhes da mensagem no serviço CloudWatch.

Para enviar mensagem de texto SNS no número de telefone fornecido, precisamos fazer o seguinte -

  • Adicione o código no AWS Lambda para enviar mensagem para o seu telefone.

Exemplo

Neste exemplo, criaremos um tópico no SNS. Quando os detalhes são inseridos no tópico a ser publicado, o AWS Lambda é acionado. Os detalhes do tópico são registrados no CloudWatch e uma mensagem é enviada no telefone pelo AWS Lambda.

Aqui está um diagrama de blocos básico que explica o mesmo -

Criar Tópico no SNS

Você terá que seguir as etapas abaixo para criar um tópico no SNS -

Passo 1

Faça login no AWS Console e vá para o serviço SNS na Amazon, conforme mostrado abaixo -

Passo 2

Clique Simple Notification Serviço e Create topic iniciar.

etapa 3

Então, você tem que clicar Create new topic botão como mostrado -

Passo 4

Introduzir o Topic name e Display name e clique em Create topic. Você deve ver o nome do tópico na tela da seguinte forma -

Criar papel para permissão no IAM

Para criar uma função para trabalhar com o serviço AWS Lambda e SNS, precisamos fazer login no console da AWS. Em seguida, selecione IAM dos serviços da Amazon e clique em função do lado esquerdo, conforme mostrado abaixo.

Observe que adicionamos políticas para SNS, Lambda e CloudWatch. Adicione o nome da função e clique no botão Criar função para concluir o processo de criação da função.

Criar função AWS Lambda

Nesta seção, vamos entender como criar a função AWS Lambda usando nodejs como o tempo de execução.

Para este propósito, faça login no console da AWS e escolha AWS Lambda nos serviços da AWS. Adicione o nome da função, detalhes da função etc. e crie a função AWS Lambda conforme mostrado.

Adicionar SNS Trigger

Para adicionar gatilho SNS, insira os detalhes de configuração SNS conforme mostrado -

Então, selecione SNS topic e Add o gatilho para a função AWS Lambda conforme mostrado -

Em seguida, adicione o código lambda da AWS fornecido abaixo -

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

No código acima, event.Records[0].Sns.Messagefornece os detalhes da mensagem adicionados. Adicionamos logs de console para vê-los no CloudWatch. Agora, salve a função Lambda com a memória necessária e alocação de tempo.

Publicar no tópico para ativar o gatilho

Lembre-se de que já criamos o tópico no SNS na Etapa 1. Agora publicaremos no tópico e veremos os detalhes no CloudWatch que será acionado pelo AWS Lambda -

Publicar no tópico

Primeiro, selecione o nome do tópico que deseja publicar. Clique emPublish to topic botão -

Introduzir o Subject e Message detalhes como mostrado abaixo -

Você também pode selecionar JSON formato de mensagem para enviar JSONestilo. CliquePublish the message botão no final da tela.

Verifique os detalhes da mensagem no serviço CloudWatch

Faça login no console do AWS e abra o serviço CloudWatch. Clique nos logs do lado esquerdo e selecione os logs para a função AWS Lambda criada. Você pode encontrar a seguinte exibição para os registros com mensagens criadas conforme mostrado acima -

Adicione o código no AWS Lambda para enviar mensagem ao seu telefone

Aqui, usaremos mensagens de texto SNS para enviar mensagem no telefone usando AWS Lambda. Você pode usar o seguinte código para atualizar o código AWS Lambda da seguinte forma -

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

Adicionamos o AWS SDK e o serviço SNS para usar para enviar mensagens. A mensagem do evento proveniente do SNS é enviada como mensagem de texto no número de telefone fornecido.

Observe o seguinte código, por exemplo -

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

Digite o tópico agora para ver a mensagem no Cloudwatch e o número de telefone fornecido acima.

Clique Publish messagepara publicar a mensagem. Você vê uma mensagem no número de telefone fornecido da seguinte forma -