- 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 函数与 Amazon SNS
Amazon SNS 是一种用于推送通知的服务。在本节中,我们将通过一个示例来解释 AWS Lambda 和 Amazon SNS 的工作原理,在这个示例中,我们将执行以下操作:
在 SNS 服务中创建主题,并使用 AWS Lambda 将主题添加到 CloudWatch
向提供的电话号码发送 SNS 文本消息。
先决条件
要在 SNS 服务中创建主题并使用 AWS Lambda 将主题添加到 CloudWatch,我们无需遵循以下步骤:
- 在 SNS 中创建主题
- 在 IAM 中创建用于权限的角色
- 创建 AWS Lambda 函数
- 发布到主题以激活触发器
- 在 CloudWatch 服务中检查消息详细信息。
要向提供的电话号码发送 SNS 文本消息,我们需要执行以下操作:
- 在 AWS Lambda 中添加代码以将消息发送到您的手机。
示例
在本例中,我们将创建一个 SNS 主题。当在主题中输入详细信息以发布时,将触发 AWS Lambda。主题详细信息记录在 CloudWatch 中,并且 AWS Lambda 会向手机发送一条消息。
这是一个基本的框图,解释了相同的内容:
在 SNS 中创建主题
您需要按照以下步骤在 SNS 中创建主题:
步骤 1
登录 AWS 控制台,然后转到 Amazon 中的 SNS 服务,如下所示:
步骤 2
单击简单通知服务,然后单击其中的创建主题。
步骤 3
然后,您需要单击创建新主题按钮,如下所示:
步骤 4
输入主题名称和显示名称,然后单击创建主题。您应该在显示屏上看到主题名称,如下所示:
在 IAM 中创建用于权限的角色
要创建用于与 AWS Lambda 和 SNS 服务一起使用的角色,我们需要登录 AWS 控制台。然后,从 Amazon 服务中选择 IAM,并从左侧单击角色,如下所示。
观察到我们已为 SNS、Lambda 和 CloudWatch 添加了策略。添加角色名称,然后单击创建角色按钮以完成角色创建过程。
创建 AWS Lambda 函数
在本节中,让我们了解如何使用 nodejs 作为运行时创建 AWS Lambda 函数。
为此,请登录 AWS 控制台,然后从 AWS 服务中选择 AWS Lambda。添加函数名称、角色详细信息等,然后创建 AWS Lambda 函数,如下所示。
添加 SNS 触发器
要添加 SNS 触发器,请输入 SNS 配置详细信息,如下所示:
然后,选择SNS 主题,并将触发器添加到 AWS Lambda 函数,如下所示:
然后,添加以下 AWS lambda 代码:
exports.handler = function(event, context, callback) { console.log("AWS lambda and SNS trigger "); console.log(event); const sns = event.Records[0].Sns.Message; console.log(sns) callback(null, sns); };
在上面的代码中,event.Records[0].Sns.Message 给出了添加的消息详细信息。我们添加了控制台日志以在 CloudWatch 中查看它们。现在,使用所需的内存和时间分配保存 Lambda 函数。
发布到主题以激活触发器
回想一下,我们已在步骤 1 中创建了 SNS 中的主题。我们现在将在主题中发布,并在 CloudWatch 中查看详细信息,这些详细信息将由 AWS Lambda 触发:
发布到主题
首先选择要发布的主题的名称。单击发布到主题按钮:
输入主题和消息详细信息,如下所示:
您还可以选择JSON消息格式以JSON样式发送。在屏幕末尾单击发布消息按钮。
在 CloudWatch 服务中检查消息详细信息
登录 AWS 控制台并打开 CloudWatch 服务。单击左侧的日志,然后选择为创建的 AWS Lambda 函数创建的日志。您可以找到以下日志显示,其中包含如上所示创建的消息:
在 AWS Lambda 中添加代码以将消息发送到您的手机
这里将使用 SNS 文本消息使用 AWS Lambda 将消息发送到手机。您可以使用以下代码更新 AWS Lambda 代码,如下所示:
const aws = require("aws-sdk"); const sns = new aws.SNS({ region:'us-east-1' }); exports.handler = function(event, context, callback) { console.log("AWS lambda and SNS trigger "); console.log(event); const snsmessage = event.Records[0].Sns.Message; console.log(snsmessage); sns.publish({ Message: snsmessage, PhoneNumber: '+911212121212' }, function (err, data) { if (err) { console.log(err); callback(err, null); } else { console.log(data); callback(null, data); } }); };
我们添加了 AWS SDK 和 SNS 服务以用于发送消息。来自 SNS 的事件中的消息将作为文本消息发送到提供的电话号码。
例如,请观察以下代码:
sns.publish({ Message: snsmessage, PhoneNumber: '+911212121212' }, function (err, data) { if (err) { console.log(err); callback(err, null); } else { console.log(data); callback(null, data); } });
现在输入主题以在 cloudwatch 和上面提供的电话号码中查看消息。
单击发布消息以发布消息。您将在提供的电话号码上看到一条消息,如下所示: