【发布时间】:2019-12-23 19:34:16
【问题描述】:
我正在从 AWS lambda 上的 S3 读取多个 JSON 文件,并在经过一些处理后最终创建一个 JSON,我能够读取这些文件并将它们组合起来,但它似乎不是优化最小 IO 操作的最佳方式,我面临着性能损失当文件很大时。
这里是我的简化代码
exports.handler = function (e, callback) {
helper.data.readJSON(s3_param)
.then(function (data_1) {
var data_1 = JSON.parse(data_1);
helper.data.readJSON(s3_param)
.then(function (data_2) {
var data_2 = JSON.parse(data_2);
helper.data.readJSON(s3_param)
.then(function (data_3) {
var data_3 = JSON.parse(data_3);
return SomeFuntion(data_1, data_2, data_3);
});
});
});
};
这是从 S3 读取文件的 readJSON 代码
async function readJSON(params) {
const data = (await (S3.getObject(params).promise())).Body.toString('utf-8');
return data;
}
有人可以建议更好的方法吗?
【问题讨论】:
-
避免 promise-as-callback 反模式,返回每个 Promise 以供下一个外部
.then使用 -
我建议你看看 Amazon Athena。
标签: node.js amazon-web-services amazon-s3 aws-lambda