- AWS Lambda 教程
- AWS Lambda - 主页
- AWS Lambda - 概述
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建 Lambda 函数
- NODEJS 中的函数
- Java 中的函数
- Python 中的函数
- Go 中的函数
- C# 中的函数
- 配置 Lambda 函数
- 使用 AWS 控制台创建和部署
- 使用 AWS CLI 创建和部署
- 使用无服务器框架创建和部署
- AWS 执行和调用 Lambda 函数
- 删除 Lambda 函数
- 使用 Amazon API Gateway
- 使用 Amazon S3 的 Lambda 函数
- 使用 Amazon DynamoDB 的 Lambda 函数
- 具有预定事件的 Lambda 函数
- 带有 Amazon SNS 的 Lambda 函数
- 带有 CloudTrail 的 Lambda 函数
- 使用 Amazon Kinesis 的 Lambda 函数
- 具有自定义用户应用程序的 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 服务,如下所示 -
现在,单击简单电子邮件服务,如图所示 -
单击左侧的电子邮件地址,如图所示 -
它显示一个按钮验证新电子邮件地址。点击它。
输入您要验证的电子邮件地址。单击验证此电子邮件地址按钮。您将通过该电子邮件 ID 收到来自 AWS 的邮件,电子邮件主题为:Amazon Web Services – 美国东部(弗吉尼亚北部)地区的电子邮件地址验证请求
单击邮件中提供的链接以验证电子邮件地址。验证后,它将显示电子邮件 ID,如下所示 -
创建角色以使用 AWS SES、Cloudwatch 和 AWS Lambda
您还可以创建一个角色来授予使用服务的权限。为此,请转到 IAM 并选择角色。添加所需的策略并创建角色。请注意,此处创建的角色是带有 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 发送一次邮件。