我try 写入aws lambda实例的文件系统失败.The docs say表示标准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!");
  });

匿名回调函数中的代码永远不会在lambda实例上被调用.有人成功过吗?非常感谢你的帮助.

这可能是一个相关的question.s3代码和我试图使用fs回调函数进行的操作之间是否可能存在某种冲突?下面的代码是当前正在运行的代码.

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

推荐答案

答案在于context.fail()context.succeed()个函数.由于对aws和lambda的世界完全陌生,我不知道将这些方法中的任何一种称为stops execution of the lambda instance.

根据文件:

背景.succeed()方法表示成功执行并返回

通过删除这些代码,并在我运行完所有想要的代码后才调用它们,一切都很顺利.

Node.js相关问答推荐

CloudTasksClient在Firebase Function % s onDocumentCreated中实例化时导致错误

在Node.js下使用PostgreSQL客户端聚合PostgreSQL中的用户定义类型

如何在RavenDB中执行JS索引?

(0,core_1.default)不是使用@middy/core的lambda处理程序上的函数

是否可以在MongoDB中比较和匹配引用文档中的字段

Node-Red Tasmota 错误:连接 ECONNREFUSED 192.168.77.21:1883

NodeJS:zlib.gzipSync 在不同平台上给出不同的明文输出

几个 lambda 共有的函数

未授权使用联合身份未授权用户角色从 Amplify graphQL 访问类型 Y 上的 X

等到文件上传完成的有效方法(mongoose )

用于排除多个文件的 node.js glob 模式

如何解决'npm应该在 node repl之外运行,在你的普通shell中'

如何使用 Node.js、Express 和 Mongoose 进行身份验证?

Node.js, require.main === 模块

chart.js 无法创建图表:无法从给定项目获取上下文

Passport 的 req.isAuthenticated 总是返回 false,即使我硬编码 done(null, true)

什么是 JavaScript 中的REPL?

Node.js - 判断是否安装了模块而不实际需要它

react-native run-android 无法识别

AWS Lambda:如何将秘密存储到外部 API?