在node.js lambda中传输大文件

时间:2018-04-02 22:11:07

标签: javascript node.js amazon-s3 aws-lambda fs

我是javascript的新手,已经编写了一些nodejs代码,通过使用crypto模块进行流式传输来计算S3中文件的校验和。当项目是小尺寸(1-5GB)时,它会很好,较大的文件将超时,因为在lambda超时启动并且尚未到达结束事件时,并非所有流数据都已被消耗。我想知道是否有方法来调整此代码,以便它将处理大约30gb范围内的大文件?我注意到在我的lambda中,cpu内存几乎没有被充分利用,每次只使用大约10% 148mb/1530mb分配,我可以在那里做任何事情吗?感谢任何帮助,谢谢!

var AWS = require('aws-sdk');
const crypto = require('crypto');
const fs = require('fs');
const s3 = new AWS.S3();
let s3params = {
    Bucket: 'nlm-qa-int-draps-bucket',
    //Key: filename.toString(),
    Key: '7801339A.mkv',
};
let hash = crypto.createHash('md5');
let stream = s3.getObject(s3params).createReadStream();
stream.on('data', (data) => {
    hash.update(data);
});
stream.on('end', () => {
            var digest = hash.digest('hex');
            console.log("this is md5 value from digest: " + digest);
            callback(null, digest);
            digest = digest.toString().replace(/[^A-Za-z 0-9 \.,\?""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g, '');

0 个答案:

没有答案