【发布时间】:2021-12-29 17:02:09
【问题描述】:
我正在尝试从 AWS S3 存储桶中提取多个文件,并愿意在之后合并所有文件的响应。
例如,我有以下文件:
my-bucket/mainfile1.json.gz
my-bucket/mainfile2.json.gz
my-bucket/mainfile3.json.gz
目前我正在访问这样的单个文件:
const unzipFromS3 = (key, bucket) => {
return new Promise(async (resolve, reject) => {
AWS.config.loadFromPath(process.env["PWD"]+'/private/awss3/s3_config.json');
var s3 = new AWS.S3();
let options = {
'Bucket': "my-bucket",
'Key': "mainfile1.json.gz",
};
s3.getObject(options, function(err, res) {
if(err) return reject(err);
resolve(zlib.unzipSync(res.Body).toString());
});
});
};
unzipFromS3().then(function(result){
console.dir(result);
});
现在这非常适合单个文件,但是如果我想合并来自 3 个单独文件的数据,如何使用多个文件来实现呢?
【问题讨论】:
-
是什么阻止您多次执行此操作,然后在全部完成后,连接或以其他方式合并生成的 gz 文件?
-
我无法在具有多个键的 aws 文档中找到任何内容
-
没有SDK函数可以在同一个调用中获取多个对象。您只需进行多次下载,每个对象一个。当all complete 时,继续进行合并。
-
@jarmod 我真的不擅长 javascript,你能用 Promise.all 功能发布答案吗?
标签: javascript node.js amazon-web-services amazon-s3 aws-lambda