【发布时间】:2019-07-29 15:40:27
【问题描述】:
我是 NodeJS 的新手,我正在尝试从 lambda 向 AWS SNS 发布消息。我从 AWS 代码示例中获取了代码,它在 lambda 中运行良好。 但是当我将相同的代码包装在一个函数中并从主处理程序调用时,它不起作用..
我尝试返回并解决承诺,但没有任何效果。
// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set region
exports.handler = async (event, context) => {
saveToSNS();
};
function saveToSNS() {
console.log("sdsdsd");
var AWS = require('aws-sdk');
var params = {
Message: 'MESSAGE_TEXT', /* required */
TopicArn: '<MY TOPIC>'
};
// Create promise and SNS service object
var publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise();
// Handle promise's fulfilled/rejected states
return publishTextPromise.then(
function(data) {
console.log("sdsdsd");
console.log("Message ${params.Message} send sent to the topic ${params.TopicArn}");
console.log("MessageID is " + data.MessageId);
}).catch(
function(err) {
console.error(err, err.stack);
});
}
【问题讨论】:
-
我能够通过从处理程序中删除 async keyworkd 来解决此问题。有人可以解释当 async keywrd 出现时发生了什么吗?
-
我认为,您需要在处理程序中为
saveToSNS ()调用添加return语句。我的意思是exports.handler = async (event, context) => { return saveToSNS(); };
标签: node.js amazon-web-services aws-lambda amazon-sns