【发布时间】:2021-02-15 19:25:43
【问题描述】:
已创建一个 SNS 主题来调用订阅的 Lambda 函数,该函数将用户添加到 Cognito 中的组。使用 Web 浏览器中的控制台向主题发送消息可以正常工作。调用 Lambda 函数并将用户添加到组中。
下面的 Lambda 函数尝试通过向 SNS 主题本身发送消息来替换 Web 控制台,该消息应以将用户添加到组中结束。在 Lambda Web 控制台中运行该函数时,该函数返回以下消息:
执行结果:成功(logs)
但是用户没有成功添加到组中。为什么 Lambda 返回成功,但消息没有发送到 SNS 主题?是不是某处配置错误?
var AWS = require('aws-sdk');
exports.handler = async (event) => {
AWS.config.update({region: 'ca-central-1'});
var params = {
Message: 'Example',
TopicArn: 'arn:aws:sns:ca-central-1:example:example'
};
var publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise();
publishTextPromise.then(
function(data) {
console.log(`Message ${params.Message} sent to the topic ${params.TopicArn}`);
console.log("MessageID is " + data.MessageId);
}).catch(
function(err) {
console.error(err, err.stack);
});
};
【问题讨论】:
-
CloudWatch 中有任何日志吗?另外,Lambda 函数是否有权发布到 SNS 主题?
-
@Christian 将 SNS 权限添加到 Lambda 函数的最佳方法是什么?
-
请看下面我的回答。
标签: javascript amazon-web-services aws-lambda amazon-sns