TLDR: Comment enregistrer les erreurs http
500 dans Lambda?La méthode AWS Lambda utilisant http.request n'atteint jamais l'événement d'erreur, même avec la réponse 500
Je tente de consigner les erreurs de ma méthode API interne (non accessible directement à l'abonnement SNS), appelée dans Lambda, dans CloudWatch. Voici ma méthode Lambda nodejs 6.10:
var http = require('http');
exports.handler = function(event, context, callback) {
var post_data = event.Records[0].Sns.Message;
var post_options = {
host: 'myhost.com',
port: 80,
path: '/path/to/api/',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': post_data.length
}
};
var post_request = http.request(post_options, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
callback(null, body);//This event happens, even when server returns 500
});
res.on('error', function(e) {
callback(e);//This event never gets called
});
});
post_request.on('error', function(e) {
callback(e);//This event never gets called either
});
post_request.end(post_data);
};
Ma méthode API renvoie une 500. Cependant, mon événement post_request.on('error')
ou res.on('error')
est jamais exécutée. Il exécute toujours le res.on('end')
à la place.
Je voudrais signaler l'erreur complète dans cloudwatch, mais à la place il me donne juste un message d'erreur générique, tout en disant que la méthode lambda a été couronnée de succès.
ok, cela a du sens, confondant qu'avec javascript, il ressemble à une méthode jquery ajax. laisse moi essayer ça. – Nate
confirmé, désolé, il a fallu si longtemps, jour occupé! Merci encore! – Nate