AWS Lambda / tmp文件-分段错误(核心已转储)

时间:2019-07-25 03:12:39

标签: c++ node.js amazon-web-services aws-lambda

我正在从S3下载一组CSV文件到Lambda的'tmp'文件夹。然后,我将文件作为输入输入到C ++可执行文件中,该文件打包在Lambda zip部署中。

Lambda:main.js

exports.handler = function(event) {        
process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT']

var bucket = 'test',
    fileKey = 'processed/2019-06-25/',
    fileNames = ["a.csv", "b.csv", "c.csv"];

    try {
        s3.download(bucket, fileKey, fileNames)
        console.log("tmp after s3 download");
        let files = fs.readdirSync('/tmp/');  
        files.forEach(function (file) {
            console.log(file); 
        }); 

        let result = proc.execSync('./run', {stdio: 'inherit'});
    }
catch(e){
    console.log(e);
    return e;
}        
}

S3下载实用程序

downloadFromS3 = function (bucket, fileKey, fileNames) {
        'use strict';
        console.log('downloading', bucket, fileKey, fileNames);
            for (var i = 0; i < fileNames.length; i++) {
                var filePath = path.join(os.tmpdir(), fileNames[i]),
                file = fs.createWriteStream(filePath),
                stream = s3.getObject({
                    Bucket: bucket,
                    Key: fileKey +  fileNames[i]
                }).createReadStream();
                stream.pipe(file);
            }
    }

module.exports = {
    download: downloadFromS3
};

这是我的运行文件(calc.exe是lambda zip的一部分)

./calc -d /tmp/

以上命令引发分段错误,但是如果我创建具有相同csv文件的目录“ data”(而不是从s3下载到/ tmp),请使用Lambda代码将其检入并使用,它可以正常工作而不会出现任何错误,因此下面的命令将起作用。

./calc -d ./data

我确实验证了所有必需的csv文件都已下载到 / tmp ,但是如果使用 / tmp ,它始终会引发分段错误。但是 ./ data 可以正常工作。

0 个答案:

没有答案