Sto tentando invano di scrivere sul file system di un'istanza di aws lambda. The docs say che un'istanza lambda standard ha 512mb di spazio disponibile a /tmp/
. Tuttavia il seguente codice che viene eseguito sulla mia macchina locale non funziona affatto su istanza lambda:Come si scrive sul file system di un'istanza di aws lambda?
var fs = require('fs');
fs.writeFile("/tmp/test.txt", "testing", function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
Il codice nella funzione di callback anonima non è mai sempre chiamato sull'istanza lambda. Qualcuno ha avuto successo a fare questo? Grazie mille per il vostro aiuto.
È possibile che si tratti di uno question correlato. È possibile che ci sia un qualche tipo di conflitto tra il codice s3 e quello che sto cercando di fare con la funzione di callback fs? Il codice seguente è ciò che è attualmente in esecuzione.
console.log('Loading function');
var aws = require('aws-sdk');
var s3 = new aws.S3({ apiVersion: '2006-03-01' });
var fs = require('fs');
exports.handler = function(event, context) {
//console.log('Received event:', JSON.stringify(event, null, 2));
// Get the object from the event and show its content type
var bucket = event.Records[0].s3.bucket.name;
var key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
var params = {
Bucket: bucket,
Key: key
};
s3.getObject(params, function(err, data) {
if (err) {
console.log(err);
var message = "Error getting object " + key + " from bucket " + bucket +
". Make sure they exist and your bucket is in the same region as this function.";
console.log(message);
context.fail(message);
} else {
//console.log("DATA: " + data.Body.toString());
fs.writeFile("/tmp/test.csv", "testing", function (err) {
if(err) {
context.failed("writeToTmp Failed " + err);
} else {
context.succeed("writeFile succeeded");
}
});
}
});
};
La mia comprensione di aws-lambda è che il codice viene eseguito in risposta ad un 'evento' - l''evento' quel pezzo di codice" risponde "anche all'essere attivato? –
@ JaromandaX Sì, è corretto. L'evento è stato licenziato con successo. Questo fa parte di un più ampio set di codice che tenta di scrivere un file CSV ottenuto da S3 e quindi convertirlo in Json e caricarlo di nuovo in un altro s3 bucket in modo che possa essere ingerito in un dynamoDB tramite un'altra istanza lambda. Tutto funziona ma questo pezzo ... – Rymnel
stai usando 'console.log' - l'output di console.log è a tua disposizione in qualche modo (non uso aws-lambda che è il motivo per cui lo chiedo) - se sì, fa un console.log PRIMA che fs.writeFile venga eseguito? –