Aws-lambda-using-lambda-function-with-scheduled-events
スケジュールされたイベントでの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にトリガーを追加します-
以下に示すように、 CloudWatch Events Trigger に詳細を追加します-
作成されたルールトリガーに従って、イベントは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から送信されることを示しています。