javascript - 您如何写入 aws lambda 实例的文件系统?

标签 javascript node.js amazon-web-services amazon-s3 aws-lambda

我没有成功尝试写入 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");
                }
            });
        }
    });
};

最佳答案

将您的代码修改为 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");
        }
    });
};

关于javascript - 您如何写入 aws lambda 实例的文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006874/

相关文章:

javascript - 响应式下拉菜单

json - Node.js body-parser 不会解析 json 中带有方括号的输入名称

ruby-on-rails - 可以将 AWS Gem 与 Paperclip 结合使用用于 DigitalOcean Spaces 服务吗?

javascript - 如何在 Vue.js 或 Nuxt.js 中的 First Contentful Paint 或第一个元素之后加载组件?

javascript - 在 AngularJS 中构建 SPA 应用程序与纯 JavaScript - 选择哪个 Bootstrap 进行样式设置?

javascript - Node.js 与异步 waterfall 模块同步调用

node.js - Hapi.js 和 Socket.io——socket.io.js 在哪里?

java - AWS 中的生产级微服务架构

node.js - AWS DynamoDB node.js put请求不会将数据放入Dynamo表中

javascript - 用 DOMSubtreeModified 代替 MutationObserver 问题