如何使用Node.js将文件写入和读取到Lambda-AWS

时间:2019-03-27 19:02:02

标签: amazon-web-services aws-lambda

在函数执行期间,我试图在lambda中读写/ temp dir,我知道最好的方法是使用S3,但是对于此项目,我必须使用节点文件系统

const fs = require('fs');


exports.handler = async (event) => {

const path = '/tem/hi.json';

const write = (file) => {

 fs.writeFile(file, "Hello World!", function(err) {

 if (err) return console.log(err);
 return {
 statusCode:200,
 body:JSON.stringify('data was written')
       };
    });
 };

 return write(path);
};

2 个答案:

答案 0 :(得分:1)

文件路径中有错字。

更改

const path = '/tem/hi.json';

const path = '/tmp/hi.json';

此外,fs.writeFile是一个异步操作。散布它,以便您可以await使用它:

 const write = file => {
    return new Promise((res, rej) => {
        fs.writeFile(file, JSON.stringify({ message: 'hello world' }), (err) => {
            if (err) {
                return rej(err)
            }
            return res({
                statusCode: 200,
                body: JSON.stringify({message: 'File written successfully'})
            })
        })
    })
}

最后,在您的客户端(处理程序的最后一行)上,像这样调用它:

return await write(path)

答案 1 :(得分:1)

fs.writeFile是异步操作,因此lambda在完成之前结束。您可以使用fs.writeFileSync阻止lambda执行,直到成功写入文件为止:

const write = (file) => {
   try {
     fs.writeFileSync(file, "Hello World!");
     return {
       statusCode: 200,
       body: 'data was written'
     };    
   } catch (err) {
     console.log(err);
     return {
       statusCode: 500,
       body: 'data was not written'
     };
   }
};