0

J'ai une fonction lambda où je suis en train de publier un message au sujet SNS:AWS SNS publier erreur 404

Voici le code:

var params = { 
    Message: origmessage, 
    Subject: "Retrying posting URL", 
    TopicArn: "arn:aws:sns:us-west-2:<acctid>:SampleTopic" 
}; 
sns.publish(params, function(err, data) { 
    if (err) { 
     console.log("SNS publish error") 
     console.log(err, err.stack) 
     console.log(data, data) 
     console.log("RETRY PARAMS:" + params); 
     context.fail(err); 
    } 
}); 

SNS publient erreur est cryptique que je ne peux pas pour trouver la cause première. Appréciez si quelqu'un peut m'aider à montrer un moyen de déboguer cela.

Voici l'erreur:

2017-01-19T00:41:13.947Z d440064d-dddf-11e6-abad-8de6d2739d36 { 
    [404: null] 
    message: null, 
    code: 404, 
    time: Thu Jan 19 2017 00:41:13 GMT+0000 (UTC), 
    requestId: '0ENTKJ09RT82VE0SFEUJKT75NVVV4KQNSO5AEMVJF66Q9ASUAAJG', 
    statusCode: 404, 
    retryable: false, 
    retryDelay: 26.97333029936999 
} 
'404: null 
at Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/query.js:45:29) 
at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:105:20) 
at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:77:10) 
at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:668:14) 
at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10) 
at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12) 
at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10 
at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9) 
at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:670:12) 
at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:115:18)' 
+0

Le message est énigmatique mais tout ce qu'il vous dit vraiment, c'est que vous avez un 404. Le sujet existe-t-il ..? La fonction a-t-elle la permission de publier? –

+0

Oui. Le sujet existe et la fonction a l'autorisation de publier. J'ai une fonction similaire qui est capable de publier. Le message est nul, donc je ne sais pas quoi en faire. –

Répondre

1

Selon vos commentaires, lorsque vous utilisez AWS.config.update, elle affecte tous les services. En affectant le paramètre endpoint au point de terminaison dynamodb, vous définissez ce point de terminaison pour tous les services, y compris le service de réseau d'entreprise (SNS), en utilisant le paramètre

.

Voici un exemple offensant où il est dit de préciser le endpoint pour DynamoDB:

http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.Summary.html

Au lieu de cela, le point final devrait être retiré de AWS.config.update et d'une certaine manière spécifiée dans le constructeur de chaque service.

+0

Oui. // Configurations AWS var AWS = require ("aws-sdk"); AWS.config.update ({ ) région: "us-west-2", endpoint: "https://dynamodb.us-west-2.amazonaws.com" }); var docClient = new AWS.DynamoDB.DocumentClient(); var sns = nouveau AWS.SNS ({apiVersion: '2010-03-31'}); –

+1

Je me demande si cela a quelque chose à voir avec votre paramètre 'endpoint' à' update'. Que faire si vous essayez d'enlever cela? –

+0

J'ai mis à jour ma réponse en fonction de vos commentaires. –

0

Matt - C'était tout. Dynamodb config était ce qui causait ce problème. Appréciez toute votre aide. Merci