Lors de l'envoi de messages via le service SES, le message d'erreur suivant est diffusé par la méthode sendEmail de SES.Ordre des impacts de l'initialisation de DynamoDB Amazon SES
{ [XMLParserError: Non-whitespace before first tag.
Line: 0
Column: 1
Char: {]
message: 'Non-whitespace before first tag.\nLine: 0\nColumn: 1\nChar: {',
code: 'XMLParserError',
retryable: true,
time: Thu Sep 29 2016 15:34:20 GMT-0400 (Eastern Daylight Time),
statusCode: 500 }
Après un peu de débogage j'ai rétréci vers le bas que le problème est lié l'ordre d'initialisation des objets DynamoDB et SES. Le code de test suivant reproduit le problème:
'use strict';
var AWS = require('aws-sdk');
AWS.config.update({region:'us-east-1'});
//var ses = new AWS.SES(); // This works
var dynamodb = new AWS.DynamoDB();
var docClient = new AWS.DynamoDB.DocumentClient();
AWS.config.update({endpoint: 'http://localhost:8000'});
var ses = new AWS.SES(); // Does not work
var params = {
Destination: {
ToAddresses: ['[email protected]']
},
Message: {
Body: {
Html: {Data: "This is a test"},
Text: {Data: "This is a test"}
},
Subject: {Data: "Important"}
},
Source: '<[email protected]>',
};
ses.sendEmail(params, function(err, data) {
if (err) {
console.log("Error sending email", err);
}
else
console.log("Sent email");
});
La séquence de code ci-dessus donne une erreur. Cependant, si je déplace le "var ses = new AWS.SES();" déclaration avant DynamoDB puis le code fonctionne. Je suis très curieux de savoir ce qui pourrait être la cause
Je suis assez sûr que c'est la 'AWS.config.update ({point final: 'http: // localhost: 8000'}); 'ligne qui gâche SES. Pas le fait qu'il arrive après la ligne DynamoDB. –
J'ai juste essayé de commenter cette ligne et vous avez absolument raison. Savez-vous la raison pour laquelle c'est le cas? – Atul
Il définit le point de terminaison pour tous les services AWS que vous lancez après cette ligne. Vous n'avez pas de point de terminaison SES en cours d'exécution sur votre hôte local, ce qui casse SES. –