通过 lambda 发送 SNS 推送 - 没有消息?

Sending SNS push through lambda - no message?

我的 lambda 函数有问题。它获取设备数据并发送推送通知(有人将您添加为朋友的信息)。但是,经常会发生推送通知未发送的情况。有时,我必须激活该功能几次(通过同时单击按钮)以使其发送推送通知。在 Lambda 中测试以下函数时,它不会发送任何推送通知。可能是什么问题?

提前谢谢你, 约翰

console.log("Loading friend-request function");
var AWS = require("aws-sdk");

exports.handler = function(event, context) {

    var senderID = event.senderID;
    var receiverID = event.receiverID;
    var message = event.message;

    var eventText = JSON.stringify(event);
    console.log("Received event:", eventText);
    var sns = new AWS.SNS();
    var params = {
        Message: message, 
        Subject: "Test SNS From Lambda",
        TargetArn: receiverID
    };

    context.succeed(message); 
    sns.publish(params, context.done);

};

请记住 sns.publish() 函数是异步的,即您必须等待它完成才能调用 context.succeed()。否则,Lambda 函数可能会在消息发布之前终止。

exports.handler = function(event, context) {
    // same as before...

    var params = {...}

    // do not call context.succeed() yet

    sns.publish(params, function(err, data) {
        if (err) {
            console.log('Failed to publish SNS message');
            context.fail(err);
        }
        else {
            console.log('SNS message published successfully');
            context.succeed(data);
        }
    });
};