AWS Lambda - NodeJS requête POST et asynch de lecture/écriture de fichier

Je suis nouveau sur NodeJS et à l'intérieur de AWS Lambda je suis en train de faire une requête POST qui appelle une API externe avec un objet JSON, crée un document avec la réponse, puis lit le contenu du fichier.

À venir à partir d'un Rubis de fond, je pense que le problème vient de mon manque de familiarité avec la programmation asynchrone, mais j'ai essayé d'utiliser des rappels et des readfileSync juste pour déboguer avec pas de chance.

Toute aide serait appréciée.

var querystring = require('querystring');
var https = require('https');
var fs = require('fs');
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
var operation = event.operation;
delete event.operation;
var accessKey = event.accessKey;
delete event.accessKey;
var templateName = event.templateName;
delete event.templateName;
var outputName = event.outputName;
delete event.outputName;
var req = {
"accessKey": accessKey,
"templateName": templateName,
"outputName": outputName,
"data": event.data
};
function doPost(data, callback) {
//Build the post string from an object
var post_data = JSON.stringify(data);
//An object of options to indicate where to post to
var post_options = {
host: 'hostname.com',
port: '443',
path: '/path/to/api',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': post_data.length
}
};
//Set up the request
var file = fs.createWriteStream(outputName);
var post_req = https.request(post_options, function(res) {
res.setEncoding('utf8');
res.pipe(file);
res.on('response', function(response)  {
console.log(response); 
});
res.on('error', function(e) {
context.fail('error:' + e.message);
})
res.on('end', function() {
context.succeed('success, end request listener');
});
});
//post the data
post_req.write(post_data);
post_req.end();
callback();
}
function printFileContents() {
fs.readFileSync(outputName, 'utf8', function (err, data) {
console.log('file contents:' + data);
});            
}
switch (operation) {
case 'create':
//Make sure there's data before we post it
if(req) {
doPost(req, printFileContents);
printFileContents();
}
break;
...
}
};
InformationsquelleAutor user5347553 | 2015-09-17