AmazonDynamoDBでのLambda関数の使用
DynamoDBは、データがテーブルに追加、更新、または削除されたときにAWSLambdaをトリガーできます。この章では、DynamoDBテーブルにアイテムを追加する簡単な例と、データを読み取り、データが追加されたメールを送信するAWSLambdaについて説明します。
必要条件
AmazonDBとAWSLambdaを使用するには、以下に示す手順に従う必要があります-
主キーを使用してDynamoDBにテーブルを作成します
DynamoDBおよびAWSLambdaを操作する権限を持つロールを作成します。
AWSLambdaで関数を作成する
メールを送信するためのAWSLambdaトリガー
DynamoDBにデータを追加する
この各ステップについて詳しく説明します。
例
DynamoDBとAWSLambdaの間の基本的な相互作用を示す次の例を実行します。この例は、次の操作を理解するのに役立ちます-
Dynamodbテーブルにcustomerというテーブルを作成し、そのテーブルにデータを入力する方法。
データが入力されるとAWSLambda関数をトリガーし、AmazonSESサービスを使用してメールを送信します。
例の流れを説明する基本的なブロック図は次のとおりです。
主キーを使用してDynamoDBにテーブルを作成する
AWSコンソールにログインします。以下に示すように、AWS Servicesに移動し、DynamoDBを選択します。DynamoDBを選択します。
DynamoDBは以下のようなオプションを表示します-
次に、をクリックします Create table図のようにテーブルを作成します。テーブルに名前を付けましたcustomer そのテーブルの主キーを cust_id。クリックCreate テーブルをdynamodbに追加するボタン。
作成されるテーブルは次のとおりです-
次のように作成されたテーブルにアイテムを追加できます-
クリック Items をクリックします Create item 示されているボタン-
DynamoDBおよびAWSLambdaを操作するためのパーミッションを持つロールの作成
ロールを作成するには、AWSサービスに移動して[IAM]をクリックします。
以前に作成したDynamoDBテーブルにのみ使用するポリシーを作成しましょう-
今、選択します Service。選択したサービスがDynamoDB。ためにActions 私たちはすべてを取りました Dynamodbアクション、つまりリストへのアクセス、読み取り、書き込み。ためにresources、テーブルリソースタイプのアクションを選択します。クリックすると次のような画面が表示されます−
ここで、 table そして Add ARN示されているようにそれに。私たちは得るだろうARN からの詳細 customer table 以下のように作成-
入る arn 詳細はこちら−
クリック Addボタンをクリックして変更を保存します。完了したらClick on Review policy。以下に示すように、ポリシーの名前、説明などを入力します-
クリック create policyそれを保存します。作成するロールにポリシーを追加します。選択するRole 左側から詳細を入力します。
追加されたポリシーが次のとおりであることを確認します newpolicyfordynamdb, awslambdafullaccess, cloudwatchfullaccess そして amazonsesfullaccess。ロールを追加し、AWSLambda関数の作成時に使用します。
AWSLambdaで関数を作成する
したがって、次のように呼ばれるLambda関数を作成しました newlambdafordynamodb 示されているように。
次に、作成したAWSLambdaにDynamodDBトリガーを追加しましょう。使用するランタイムはNode.jsです。
AWSLambda用に設定されるDynamodbトリガーで次の詳細を見つけることができます-
今、単にクリックします Add AWSLambdaにトリガーを追加します。
メールを送信するAWSLambdaトリガー
AWS Lambdaは、データがAWSLambdaに挿入されるとトリガーされます。イベントパラメーターには、dynamodbデータが挿入されます。これにより、イベントからデータが読み取られ、メールが送信されます。
メールを送信する
メールを送信するには、以下の手順に従う必要があります-
ステップ1
AWSサービスに移動し、SES(シンプルメールサービス)を選択します。図のように、電子メールの送信先となる電子メールを検証します-
ステップ2
ボタンをクリックします Verify a New Email Address メールアドレスを追加します。
ステップ3
メールアドレスを入力して確認してください。メールアドレスは、クリックする必要があるアマゾンからのアクティベーションメールを受信します。アクティベーションが完了すると、メールIDが確認され、AWSサービスで使用できるようになります。
ステップ4
イベントからデータを読み取り、メールを送信するAWSLambdaコードを以下に示します-
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");
}
});
}
次に、Lambda関数とデータをDynamoDBテーブルに保存します。
DynamoDBにデータを追加する
次のシーケンスを使用して、DynamoDBにデータを追加します。
ステップ1
テーブルに行く customer Dynamodbで作成されました。
ステップ2
クリック Create item。
ステップ3
クリック Save ボタンをクリックし、AWS Lambdaで提供されているメールIDをチェックして、メールがAWSLambdaによって送信されたかどうかを確認します。