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控制台,进入亚马逊的SNS服务,如下图-
步骤 2
点击
简单通知服务并在其中
创建主题。
步骤 3
然后,您必须点击
创建新主题按钮,如图所示-
步骤 4
输入
主题名称和
显示名称,然后点击
创建主题。您应该在显示中看到主题名称,如下所示-
在 IAM 中为权限创建角色
要创建角色以使用 AWS Lambda 和 SNS 服务,我们需要登录到 AWS 控制台。然后,从Amazon services中选择IAM,点击左侧的role,如下图。
请注意,我们为 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);
}
});
现在进入主题查看云表消息和上面给出的电话号码。
点击
发布消息发布消息。您会在电话号码上看到一条消息,如下所示-
