你如何写入aws lambda实例的文件系统?

我尝试写入aws lambda实例的文件系统失败。 文档说 ,一个标准的lambda实例在/tmp/有512mb的可用空间。 但是,在本地机器上运行的以下代码在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!"); }); 

匿名callback函数中的代码永远不会在lambda实例上调用。 任何人都有这样的成功吗? 非常感谢你的帮助。

这可能是一个相关的问题 。 s3代码和我想用fscallback函数做什么之间有可能发生冲突吗? 下面的代码是目前正在运行的。

 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"); } }); } }); }; 

将代码修改为Lambda模板适用于我。 我认为你需要分配一个函数到exports.handler并调用适当的context.succeed()context.fail()方法。 否则,你只是得到一般的错误。

 var fs = require("fs"); exports.handler = function(event, context) { fs.writeFile("/tmp/test.txt", "testing", function (err) { if (err) { context.fail("writeFile failed: " + err); } else { context.succeed("writeFile succeeded"); } }); }; 

所以答案在于context.fail()context.succeed()函数。 对于aws和lambda世界来说,我是一个完全陌生的人,我不知道调用这些方法中的任何一个都会停止lambda实例的执行 。

根据文件:

context.succeed()方法表示成功执行并返回一个string。

通过消除这些,只有在我运行所有我想要的代码后才调用它们,一切运行良好。