lambda函数错误:EROFS:只读文件系统,打开“./tmp/test.zip”过程完成请求

问题描述:

I have download a zip file from s3 bucket then extracting the zip file and finally upload one file to s3 bucket in Lambda function using Node JS.But am getting the errorlambda函数错误:EROFS:只读文件系统,打开“./tmp/test.zip”过程完成请求

==> Error: EROFS: read-only file system, open './tmp/test.zip' "Process exited before completing> request"

exports.handler = function (callback) { 

downloadZipFile(params, downloadPath, function (err) { 
    if (err) { 
     callback(err); 
    } else { 
     processZipFile(downloadPath, function (err) { 
      if (err) { 
       callback(err); 
      } else { 
       callback(null); 
      } 
     }); 

     } 
    }); 

}; 

function downloadZipFile(params, downloadPath, callback) { 

const file = fs.createWriteStream(downloadPath); 

s3.getObject(params) 
    .on('httpData', function (chunk) { 

     file.write(chunk); 
    }) 
    .on('success', function() { 

     callback(null); 
    }) 
    .on('error', function (err) { 

     callback(err); 
    }) 
    .on('complete', function() { 

     file.end(); 
    }) 
    .send(); 
} 

function processZipFile(filePath) { 

const stats = fs.statSync(filePath) 
const fileSizeInBytes = stats.size 

if (fileSizeInBytes > 0) { 

    var srcPath = filePath; 
    var destPath = "./tmp"; 
    targz.decompress({ 
     src: srcPath, 
     dest: destPath 

    }, function (err) { 
     if (err) { 
      console.log(err); 
     } else { 
      console.log("Done!"); 

      UploadFile(); 
     } 

    }); 
    } 
} 

function UploadFile() { 

var body = fs.createReadStream('./tmp/SampleFile.txt') 

var srcfileKey = "SampleFile.txt"; 
// Upload the stream 
var s3obj = new AWS.S3({ params: { Bucket: bucketName, Key: srcfileKey } }); 
s3obj.upload({ Body: body }, function (err, data) { 
    if (err) { 
     console.log("An error occurred", err); 
    } 

    console.log("Uploaded the file at", data.Location); 
}) 
} 
+0

的可能的复制[无法在本地调试和运行lambda函数使用节点的js(http://stackoverflow.com/questions/43391676/unable-to-debug-and-run-the-lambda-function-locally - 使用节点-JS) –

退出之前,您需要更改文件路径的./tmp只是/tmp代替。 Lambda只允许您写入/tmp目录。