Отправить уведомление AWS SNS на телефон Android из AWS Lambda Node.js

Я хочу отправить AWS SNS на конечную точку устройства Android из ASW lambda node.js, но у меня все еще возникает эта ошибка: «com.amazonaws.mobileconnectors.lamdainvoker.LambdaFunctionException: Unhandled»

код в основном похож на примеры, которые я видел здесь, в stackoverflow:

config = require("./config.js").config;

var token = "1234567898123456789";

var AWS = require('aws-sdk');

AWS.config.update({accessKeyId: config.AWSAccessKeyId, secretAccessKey: 
config.AWSSecretKey});
AWS.config.update({region: config.AWSRegion});

var sns = new AWS.SNS();

var params = 
{'PlatformApplicationArn':config["AWSTargetARN"],'Token':token};

var message = 'Test';
var subject = 'Stuff';

sns.createPlatformEndpoint(params,function(err,EndPointResult)
{
var client_arn = EndPointResult["EndpointArn"];

sns.publish({
TargetArn: client_arn,
Message: message,
Subject: subject},
    function(err,data){
    if (err)
    {
        console.log("Error sending a message "+err);
    }
    else
    {
        console.log("Sent message: "+data.MessageId);

    }
});
});

Для политики лямбда-функции установлено значение; «Эффект»: «Разрешить» «sns: *» в Android-приложении ARN. Так что я предполагаю, что это не вопрос ролевой политики. Любая помощь приветствуется. Спасибо.


person S bruce    schedule 22.07.2017    source источник


Ответы (1)


Отправка уведомления на конечную точку Android:

var sns = new AWS.SNS();

AWS.config.update({
accessKeyId: theaccessKeyId,
secretAccessKey: thesecretAccessKey,
 region: theregion
});


sns.createPlatformEndpoint({
PlatformApplicationArn:  theapplicationARN,
Token: theToken
}, function(err, data) {
if (err) {
callback(null, JSON.stringify(err)); 
console.log(err.stack);
return;
}

var endpointArn = "endpoinARN of receiver";

 var payload = {
 "default": "The message string.",     
"APNS": "{\"aps\":{\"alert\": \"Check out these awesome 
deals!\",\"url\":\"www.amazon.com\"} }",
"GCM":"{\"data\":{\"message\":\"Check out these awesome 
deals!\",\"url\":\"www.amazon.com\"}}",
"ADM": "{ \"data\": { \"message\": \"Check out these awesome 
deals!\",\"url\":\"www.amazon.com\" }}" 
 };

  // first have to stringify the inner GCM object...
  payload.GCM = JSON.stringify(payload.GCM);
  // then have to stringify the entire message payload
  payload = JSON.stringify(payload);

  console.log('sending push');
  sns.publish({
   Message: payload,
  MessageStructure: 'json',
  TargetArn: endpointArn
 }, function(err, data) {
  if (err) {
     callback(null, JSON.stringify(err)); 
  //console.log(err.stack);
  return;
 }

  callback(null, "Sent message successfully"); 
  //console.log('push sent');
  // console.log(data);
 });
});

Измените свою ситуацию.

person S bruce    schedule 22.07.2017