我是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, '');