Lambda 预定事件
预定的事件应该根据规则集定期发生。计划事件用于在 cloudwatch 服务中定义的时间间隔后执行 Lambda 函数。它们最适合与 AWS Lambda 一起用于处理 cron 作业。本章将通过简单示例说明如何使用计划事件和 AWS Lambda 每 5 分钟发送一次邮件。
要求
将 Lambda 函数与预定事件一起使用的要求如下-
使用 AWS SES 验证电子邮件 ID
创建角色以使用 AWS SES、Cloudwatch 和 AWS Lambda
创建 Lambda 函数以发送电子邮件
为来自 AWS CloudWatch 的计划事件添加规则
示例
我们将要考虑的示例将向 AWS Lambda 函数添加 CloudWatch 事件。 Cloudwatch 将根据附加的时间模式触发 AWS Lambda。例如,在下面的示例中,我们使用了 5 分钟作为触发器。这意味着每 5 分钟,AWS Lambda 将被触发一次,AWS Lambda 将在每次触发时发送邮件。
基本框图如下所示-
使用 AWS SES 验证电子邮件 ID
登录 AWS 并进入 AWS SES 服务,如下所示-
现在,点击
Simple Email 服务,如图所示-
点击左侧的
电子邮件地址,如图所示-
它会显示一个按钮
验证新电子邮件地址。点击它。
输入您要验证的
电子邮件地址。单击
验证此电子邮件地址按钮。您将通过该电子邮件 ID 收到来自 AWS 的邮件,电子邮件主题为:Amazon Web Services – 美国东部(弗吉尼亚北部)地区的电子邮件地址验证请求
单击邮件中提供的链接以验证电子邮件地址。验证后,它将显示电子邮件 ID,如下所示-
创建角色以使用 AWS SES、Cloudwatch 和 AWS Lambda
您还可以创建授予使用服务权限的角色。为此,请转到 IAM 并选择角色。添加所需的策略并创建角色。注意这里创建的角色是
带有 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: ["xxxxxxxt12@gmail.com"]
},
Message: {
Body: {
Text: {
Data: "this mail comes from aws lambda event scheduling"
}
},
Subject: {
Data: "Event scheduling from aws lambda"
}
},
Source: "coxxxxxx@gmail.com"
};
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 发送邮件,我们创建了
eParams 对象,该对象具有
示例邮件之类的详细信息,以邮件 id 和
带有消息的正文如下-
var eParams = {
Destination: {
ToAddresses: ["xxxxxxxx12@gmail.com"]
},
Message: {
Body: {
Text: {
Data: "this mail comes from aws lambda event scheduling"
}
},
Subject: {
Data: "Event scheduling from aws lambda"
}
},
Source: "coxxxxxx@gmail.com"
};
发送电子邮件的 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 分钟从 AWS Lambda 发送一次。
