スケジュールされたイベントでのLambda関数の使用

スケジュールされたイベントは、ルールセットに基づいて定期的に発生することが想定されています。スケジュールされたイベントは、cloudwatchサービスで定義された間隔の後にLambda関数を実行するために使用されます。これらは、AWSLambdaと一緒にcronジョブで作業するのに最適です。この章では、スケジュールされたイベントとAWSLambdaを使用して5分ごとにメールを送信する方法を簡単な例で説明します。

必要条件

スケジュールされたイベントでLambda関数を使用するための要件は次のとおりです-

  • AWSSESを使用してメールIDを確認する
  • AWS SES、Cloudwatch、AWSLambdaを使用するためのロールを作成する
  • メールを送信するLambda関数を作成する
  • AWSCloudWatchからスケジュールされたイベントのルールを追加します

検討する例では、CloudWatchイベントをAWSLambda関数に追加します。Cloudwatchは、添付されているタイムパターンに基づいてAWSLambdaをトリガーします。たとえば、以下の例では、トリガーとして5分を使用しています。つまり、5分ごとに、AWS Lambdaがトリガーされ、AWSLambdaはトリガーされるたびにメールを送信します。

同じものの基本的なブロック図を以下に示します-

AWSSESを使用してEメールIDを確認する

以下に示すように、AWSにログインし、AWSSESサービスにアクセスします-

次に、をクリックします Simple Email 示されているサービス-

クリック Email Addresses 図のように左側に-

ボタンが表示されます Verify a New Email Address。クリックして。

入る Email Address確認したい。クリックVerify This Email Addressボタン。AWSから、そのメールIDにメールの件名が記載されたメールが届きます:Amazon Web Services –米国東部(バージニア州北部)のメールアドレス確認リクエスト

メールに記載されているリンクをクリックして、メールアドレスを確認してください。確認されると、次のようにメールIDが表示されます-

AWS SES、Cloudwatch、AWSLambdaを使用するためのロールを作成する

また、サービスの使用を許可するロールを作成することもできます。これを行うには、IAMに移動して[役割]を選択します。必要なポリシーを追加し、役割を作成します。ここで作成された役割は次のとおりです。events with lambda

メールを送信するLambda関数を作成する

ランタイムをnodejsとして使用してLambda関数を作成するには、手順に従う必要があります。

次に、図のようにLambdaにトリガーを追加します-

詳細を追加する CloudWatch Events Trigger 以下に示すように-

作成されたルールトリガーに従って、イベントは5分ごとにトリガーされることに注意してください。

メールを送信するためのLambdaコードを以下に示します-

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");
      }
   });
};

ここで、AWSSESサービスが必要です。次のようなコードを使用してこれを追加できます-

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

からメールを送信するには nodejs、作成しました eParams 次のような詳細を持つオブジェクト example mail, to mail id そして the body with message 次のように-

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]"
};

メールを送信するLambdaコードは次のとおりです-

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関数を保存して、メールのメールIDを確認しましょう。以下に示すスクリーンショットは、メールが5分ごとにAWSLambdaから送信されることを示しています。