Używanie funkcji Lambda z Amazon DynamoDB
DynamoDB może wyzwolić AWS Lambda, gdy dane zostaną dodane do tabel, zaktualizowane lub usunięte. W tym rozdziale będziemy pracować na prostym przykładzie, który doda pozycje do tabeli DynamoDB i AWS Lambda, które odczytują dane i wyślą pocztę z dodanymi danymi.
Przybory
Aby korzystać z Amazon DB i AWS Lambda, musimy wykonać kroki, jak pokazano poniżej -
Utwórz tabelę w DynamoDB z kluczem podstawowym
Utwórz rolę, która będzie miała uprawnienia do pracy z DynamoDBand AWS Lambda.
Utwórz funkcję w AWS Lambda
AWS Lambda Trigger do wysyłania poczty
Dodaj dane w DynamoDB
Omówmy szczegółowo każdy z tych kroków.
Przykład
Będziemy pracować na następującym przykładzie, który pokazuje podstawową interakcję między DynamoDB i AWS Lambda. Ten przykład pomoże ci zrozumieć następujące operacje -
Tworzenie tabeli o nazwie klient w tabeli Dynamodb i jak wprowadzać dane do tej tabeli.
Uruchamianie funkcji AWS Lambda po wprowadzeniu danych i wysyłanie poczty za pomocą usługi Amazon SES.
Podstawowy schemat blokowy, który wyjaśnia przepływ przykładu, jest pokazany poniżej -
Utwórz tabelę w DynamoDB z kluczem podstawowym
Zaloguj się do konsoli AWS. Przejdź do AWS Services i wybierz DynamoDB, jak pokazano poniżej. Wybierz DynamoDB.
DynamoDB pokazuje opcje, jak pokazano poniżej -
Teraz kliknij Create tableaby utworzyć tabelę, jak pokazano. Nazwaliśmy tabelę jakocustomer z kluczem podstawowym dla tej tabeli jako cust_id. KliknijCreate przycisk, aby dodać tabelę do dynamodb.
Utworzona tabela jest taka, jak pokazano poniżej -
Do utworzonej tabeli możemy dodawać pozycje w następujący sposób -
Kliknij Items i kliknij Create item przycisk jak pokazano -
Tworzenie roli z uprawnieniami do pracy z DynamoDB i AWS Lambda
Aby utworzyć rolę, przejdź do usług AWS i kliknij IAM.
Utwórzmy politykę, która będzie używana tylko dla utworzonej wcześniej tabeli DynamoDB -
Teraz wybierz plik Service. Zwróć uwagę, że wybrana przez nas usługa toDynamoDB. DlaActions wzięliśmy wszystko Dynamodbakcje tj. dostęp do listy, odczytu i zapisu. Dlaresources, wybierzemy akcje typu zasobu tabeli. Kiedy go klikniesz, zobaczysz następujący ekran -
Teraz wybierz table i Add ARNdo niego, jak pokazano. DostaniemyARN szczegóły z customer table utworzone, jak pokazano poniżej -
Wchodzić arn szczegóły tutaj -
Kliknij Addaby zapisać zmiany. Raz zrobioneClick on Review policy. Wprowadź nazwę polisy, opis itp., Jak pokazano poniżej -
Kliknij create policyaby to zapisać. Dodaj politykę do tworzonej roli. WybierzRole z lewej strony i wprowadź szczegóły.
Zwróć uwagę, że dodane zasady są newpolicyfordynamdb, awslambdafullaccess, cloudwatchfullaccess i amazonsesfullaccess. Dodaj rolę i użyje jej podczas tworzenia funkcji AWS Lambda.
Utwórz funkcję w AWS Lambda
W ten sposób stworzyliśmy funkcję Lambda o nazwie newlambdafordynamodb jak pokazano.
Teraz dodajmy wyzwalacz DynamodDB do utworzonej AWS Lambda. Środowisko uruchomieniowe, którego będziemy używać, to Node.js.
Poniższe szczegóły można znaleźć w wyzwalaczu Dynamodb, który ma zostać skonfigurowany dla AWS Lambda -
Teraz wystarczy kliknąć Add aby dodać wyzwalacz do AWS Lambda.
Wyzwalacz AWS Lambda do wysyłania poczty
AWS Lambda zostanie wyzwolone, gdy dane zostaną wstawione do AWS Lambda. Parametr zdarzenia będzie zawierał dane dynamodb. Spowoduje to odczytanie danych z wydarzenia i wysłanie wiadomości e-mail.
Wysyłanie e-maila
Aby wysłać wiadomość e-mail, musisz wykonać poniższe czynności -
Krok 1
Przejdź do usługi AWS i wybierz SES (prosta usługa e-mail). Potwierdź wiadomość e-mail, na którą musimy wysłać wiadomość e-mail, jak pokazano -
Krok 2
Naciśnij przycisk Verify a New Email Address aby dodać adres e-mail.
Krok 3
Wpisz adres e-mail, aby go zweryfikować. Na adres e-mail zostanie wysłana wiadomość aktywacyjna od Amazon, którą należy kliknąć. Po zakończeniu aktywacji identyfikator e-mail jest weryfikowany i można go używać z usługami AWS.
Krok 4
Kod AWS Lambda, który odczytuje dane ze zdarzenia i wysyła e-mail jest podany poniżej -
var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
console.log(event);
let tabledetails = JSON.parse(JSON.stringify(event.Records[0].dynamodb));
console.log(tabledetails.NewImage.address.S);
let customerid = tabledetails.NewImage.cust_id.S;
let name = tabledetails.NewImage.name.S;
let address = tabledetails.NewImage.address.S;
var eParams = {
Destination: {
ToAddresses: ["[email protected]"]
},
Message: {
Body: {
Text: {
Data: "The data added is as follows:\n CustomerId:"+customerid+"\n Name:"+name+"\nAddress:"+address
}
},
Subject: {
Data: "Data Inserted in Dynamodb table customer"
}
},
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 zapisz funkcję Lambda i dane w tabeli DynamoDB.
Dodaj dane w DynamoDB
Użyj następującej sekwencji, aby dodać dane do DynamoDB.
Krok 1
Podejdź do stołu customer utworzony w Dynamodb.
Krok 2
Kliknij Create item.
Krok 3
Kliknij Save i sprawdź e-mail id podany w AWS Lambda, aby zobaczyć, czy wiadomość została wysłana przez AWS Lambda.