スケジュールされたイベントでの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から送信されることを示しています。