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によって送信されたかどうかを確認します。