Używanie funkcji Lambda z zaplanowanymi zdarzeniami

Przypuszcza się, że zaplanowane zdarzenia mają miejsce w regularnych odstępach czasu na podstawie zestawu reguł. Zaplanowane zdarzenia służą do wykonania funkcji Lambda po interwale zdefiniowanym w usługach Cloudwatch. Najlepiej nadają się do pracy z zadaniami cron wraz z AWS Lambda. W tym rozdziale wyjaśniono na prostym przykładzie, jak wysyłać pocztę co 5 minut przy użyciu zaplanowanych wydarzeń i AWS Lambda.

Przybory

Wymagania dotyczące korzystania z funkcji Lambda z zaplanowanymi zdarzeniami są następujące -

  • Zweryfikuj identyfikator e-mail za pomocą AWS SES
  • Utwórz rolę, aby używać AWS SES, Cloudwatch i AWS Lambda
  • Utwórz funkcję Lambda, aby wysłać e-mail
  • Dodaj regułę dla zaplanowanych wydarzeń z AWS CloudWatch

Przykład

Przykład, który będziemy rozważać, doda zdarzenie CloudWatch do funkcji AWS Lambda. Cloudwatch uruchomi AWS Lambda w oparciu o dołączony do niego wzorzec czasu. Na przykład w poniższym przykładzie użyliśmy 5 minut jako wyzwalacza. Oznacza to, że co 5 minut AWS Lambda będzie wyzwalana, a AWS Lambda będzie wysyłać pocztę po każdym uruchomieniu.

Podstawowy schemat blokowy tego samego pokazano poniżej -

Zweryfikuj identyfikator e-mail za pomocą AWS SES

Zaloguj się do AWS i przejdź do usługi AWS SES, jak pokazano poniżej -

Teraz kliknij Simple Email Usługa, jak pokazano -

Kliknij Email Addresses po lewej stronie, jak pokazano -

Wyświetla przycisk Verify a New Email Address. Kliknij to.

Wchodzić Email Addresschcesz zweryfikować. KliknijVerify This Email Addressprzycisk. Otrzymasz pocztę z AWS na ten identyfikator e-mail z tematem wiadomości e-mail: Amazon Web Services - żądanie weryfikacji adresu e-mail w regionie Wschodnie stany USA (Północna Wirginia)

Kliknij link podany w wiadomości, aby zweryfikować adres e-mail. Po zweryfikowaniu wyświetli identyfikator e-mail w następujący sposób -

Utwórz rolę, aby używać AWS SES, Cloudwatch i AWS Lambda

Możesz także utworzyć rolę, która daje uprawnienia do korzystania z usług. W tym celu przejdź do IAM i wybierz Rola. Dodaj wymagane zasady i utwórz rolę. Zwróć uwagę, że utworzona tutaj rola jestevents with lambda.

Utwórz funkcję Lambda, aby wysłać e-mail

Będziesz musiał postępować zgodnie z instrukcjami, aby utworzyć funkcję Lambda przy użyciu środowiska uruchomieniowego jako nodejs.

Teraz dodaj wyzwalacz do Lambda, jak pokazano -

Dodaj szczegóły do CloudWatch Events Trigger jak pokazano poniżej -

Należy pamiętać, że zdarzenie będzie uruchamiane co 5 minut, zgodnie z utworzoną regułą.

Kod Lambda do wysłania e-maila jest podany poniżej -

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
   var eParams = {
      Destination: {
         ToAddresses: ["[email protected]"]
      },
      Message: {
         Body: {
            Text: {
               Data: "this mail comes from aws lambda event scheduling"
            }
         },
         Subject: {
            Data: "Event scheduling from aws lambda"
         }
      },
      Source: "[email protected]"
   };
   console.log('===SENDING EMAIL===');
   var email = ses.sendEmail(eParams, function(err, data) {
      if (err) console.log(err);
      else {
         console.log("===EMAIL SENT===");
         console.log("EMAIL CODE END");
         console.log('EMAIL: ', email);
         context.succeed(event);
         callback(null, "email is send");
      }
   });
};

Teraz potrzebujemy usługi AWS SES. Możesz dodać to za pomocą kodu pokazanego w następujący sposób -

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});

Aby wysłać pocztę z nodejs, stworzyliśmy eParams obiekt, który ma szczegóły takie jak example mail, to mail id i the body with message w następujący sposób -

var eParams = {
   Destination: {
      ToAddresses: ["[email protected]"]
   },
   Message: {
      Body: {
         Text: {
            Data: "this mail comes from aws lambda event scheduling"
         }
      },
      Subject: {
         Data: "Event scheduling from aws lambda"
      }
   },
   Source: "[email protected]"
};

Kod Lambda do wysłania wiadomości e-mail jest następujący -

var email = ses.sendEmail(eParams, function(err, data) {
   if (err) console.log(err);
   else {
      console.log("===EMAIL SENT===");
      console.log("EMAIL CODE END");
      console.log('EMAIL: ', email);
      context.succeed(event);
      callback(null, "email is send");
   }
});

Teraz zapiszmy tę funkcję Lambda i sprawdźmy identyfikator e-mail dla wiadomości. Poniższy zrzut ekranu pokazuje, że poczta jest wysyłana z AWS Lambda co 5 minut.