Aws-lambda-using-lambda-function-with-scheduled-events

提供:Dev Guides
移動先:案内検索

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

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

必要条件

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

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

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

同じための基本的なブロック図は以下に示されています-

基本ブロック図

AWS SESを使用してメールIDを確認する

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

顧客エンゲージメント

さて、示されているように*シンプルなメール*サービスをクリックしてください-

シンプルなメール

示されているように左側の*メールアドレス*をクリックします-

メールアドレス

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

メールアドレスの確認

確認する*メールアドレス*を入力します。 [このメールアドレスを確認]ボタンをクリックします。 そのメールIDでAWSからメールを受信します。メールの件名は次のとおりです:Amazon Web Services –米国東部(N. バージニア州)

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

メールを表示

AWS SES、Cloudwatch、AWS Lambdaを使用するロールを作成します

サービスを使用する許可を与える役割を作成することもできます。 このためには、IAMに移動して[ロール]を選択します。 必要なポリシーを追加して、ロールを作成します。 ここで作成されたロールは、*ラムダ付きイベント*であることに注意してください。

ラムダによるイベント

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

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

Lambda Event Emails

次に、示されているようにLambdaにトリガーを追加します-

トリガーラムダの追加

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

Cloudwatch Events

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

電子メールを送信するためのラムダコードは以下のとおりです-

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

次に、AWS SESサービスが必要です。 次のように示されているコードを使用してこれを追加できます-

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});
*nodejs* からメールを送信するために、次のように、* example mailのような詳細を含む *eParams* オブジェクトを作成しました。
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]"
};

電子メールを送信するラムダコードは次のとおりです-

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分ごとにメールがAWS Lambdaから送信されることを示しています。

イベントスケジューリング