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.