2016-07-31 7 views
0

ラムダ機能に問題があります。それは、デバイスのデータを取り、プッシュ通知(誰かがあなたを友達に追加したという情報)を送信します。しかし、プッシュ通知は送信されないことがよくあります。時々、私はプッシュ通知を送信するために(ボタンを同時にクリックすることによって)時間の関数のカップルをアクティブにする必要があります。ラムダで以下の関数をテストするとき、プッシュ通知は送信されません。何が問題なのでしょうか?SNSプッシュスルーラムダ - メッセージなし?

あなたがcontext.succeed()を呼び出すことができます前に、それが完了するため、すなわちあなたは待つ必要があり、sns.publish()機能が非同期であることを覚えておいてくださいジョン

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); 

}; 

答えて

2

、事前に 、ありがとうございました。それ以外の場合は、メッセージが公開される前にラムダ関数が終了することがあります。

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); 
     } 
    }); 
}; 
+0

ありがとうございます! :) –

関連する問題