- AWS Lambda 教程
- AWS Lambda - 首页
- AWS Lambda - 概述
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建 Lambda 函数
- NODEJS 函数
- Java 函数
- Python 函数
- Go 函数
- C# 函数
- 配置 Lambda 函数
- 使用 AWS 控制台创建和部署
- 使用 AWS CLI 创建和部署
- 使用 Serverless Framework 创建和部署
- AWS 执行和调用 Lambda 函数
- 删除 Lambda 函数
- 使用 Amazon API Gateway
- Lambda 函数与 Amazon S3
- Lambda 函数与 Amazon DynamoDB
- Lambda 函数与计划事件
- Lambda 函数与 Amazon SNS
- Lambda 函数与 CloudTrail
- Lambda 函数与 Amazon Kinesis
- Lambda 函数与自定义用户应用程序
- AWS Lambda@Edge 与 CloudFront
- 使用 Cloudwatch 进行监控和故障排除
- AWS Lambda - 附加示例
- AWS Lambda 有用资源
- AWS Lambda - 快速指南
- AWS Lambda - 有用资源
- AWS Lambda - 讨论
使用 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 服务,如下所示:
现在,点击简单电子邮件服务,如下图所示:
点击左侧的电子邮件地址,如下图所示:
它显示一个按钮验证新的电子邮件地址。点击它。
输入您要验证的电子邮件地址。点击验证此电子邮件地址按钮。您将收到来自 AWS 的邮件,邮件主题为:Amazon Web Services – 电子邮件地址验证请求(美国东部(弗吉尼亚北部)区域)。
点击邮件中提供的链接以验证电子邮件地址。验证后,它将显示电子邮件 ID,如下所示:
创建角色以使用 AWS SES、CloudWatch 和 AWS Lambda
您还可以创建一个角色,该角色允许使用这些服务。为此,请转到 IAM 并选择角色。添加所需的策略并创建角色。注意此处创建的角色是events with lambda。
创建用于发送电子邮件的 Lambda 函数
您需要按照步骤使用 nodejs 作为运行时创建 Lambda 函数。
现在,添加触发器到 Lambda,如下图所示:
添加详细信息到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 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 发送一次。