将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服务,如下所示 :

Customer Engagement

现在,点击简单电子邮件服务,如下所示&减去;

简单电子邮件

点击左侧的电子邮件地址,如图所示 :

电子邮件地址

它显示一个按钮验证新的电子邮件地址.点击它.

验证电子邮件地址

输入电子邮件地址你要验证.单击验证此电子邮件地址按钮.您将通过该电子邮件ID从AWS收到邮件主题:Amazon Web Services  - 美国东部地区的电子邮件地址验证请求(弗吉尼亚州北部)

单击邮件中给出的链接确认电子邮件地址.验证后,它将显示电子邮件ID,如下所示;

显示电子邮件

创建角色以使用AWS SES,Cloudwatch和AWS Lambda

您还可以创建一个允许使用服务的角色.为此,请转到IAM并选择Role.添加所需的策略并创建角色.注意这里创建的角色是 lambda 的事件.

Lambda事件

创建Lambda函数以发送电子邮件

您必须按照步骤创建Lambda函数,使用runtime作为nodejs.

Lambda Event Emails

现在,向Lambda添加触发器,如图所示 :

添加触发器Lambda

CloudWatch事件触发器添加详细信息,如下所示 :

Cloudwatch Events

请注意,事件将在以后触发根据创建的规则触发器每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 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");
   }
});

要从 nodejs 发送邮件,我们创建了 eParams 对象,其中包含

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发送邮件.

事件安排