我正在尝试加载此URL https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json的json。该文件有600MB以上的下载空间。
我正在lambda函数中使用以下代码:
lambda函数的设置超时时间为10分钟,内存为3008MB。但是该函数正在尝试使用更多功能。
let res = await doRequest2('https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json');
function doRequest2(url) {
console.log("doRequest");
return new Promise(function (resolve, reject) {
const https = require("https");
const url = "https://pricing.us-east- 1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json";
https.get(url, res => {
res.setEncoding("utf8");
let body = "";
res.on("data", data => {
body += data;
});
res.on("end", () => {
body = JSON.parse(body);
resolve(body);
console.log(body);
});
res.on("error", () => {
console.log("Error");
reject("error");
});
});
});
}
json下载如何需要这么多内存?
答案 0 :(得分:1)
内存的用途远远不只是保存json文件的副本。它正在运行您的实际程序,维护一个https链接以及计算机执行的所有各种操作。
下载实际上繁重。由于文件大小,内存使用情况可能有点棘手。
我实际上已经设法使您的代码正常工作,但是只有四分之一,因为一旦内存使用量达到最大值,lambda就会被切断。
这项工作似乎对于lambda可以处理的工作(或至少是可靠的)有点大。
NB -我删除了一个指向temp文件夹中可用磁盘空间限制的先前答案,因为经过我自己的测试,我发现情况并非如此。