Может ли кто-нибудь мне помочь, поэтому, почему у меня возникла эта проблема, я запускаю этот код локально, он работает отлично, но в AWS лямбда я получаю эту ошибку, даже если я увеличиваю время по сравнению с лямбда-тайм-аутом, а также памятью.
В этом коде я делаю основную задачу для получения вызова, я просто конвертирую xlsx в json, а в посте я просто конвертирую тестовый каталог в zip-файл. Я пробовал его в последние несколько часов для загрузки на AWS Lambda, теперь я застрял и постоянно вижуэта ошибка может кто-нибудь выручить меня из этой ситуации заранее спасибо.
вот мой код
index.js
"use strict"
const fs = require("fs");
const path = require("path");
const ctrlFuns = require("./functionality");
const output = fs.createWriteStream(path.join(__dirname,
"./assets/docs.zip"));
const archiver = require("archiver");
const zipArchive = archiver("zip", {
gzip: true,
zlib: {
level: 9
} // Sets the compression level.
});
exports.handleHttpRequest = function (event, context, callback) {
if (event.http_method == "GET") {
ctrlFuns.xlsxToJson().then((jsonObjs) => {
callback(null, {
users: jsonObjs,
});
}).catch((err) => {
callback(err);
});
}
else if (event.http_method == "POST") {
fs.readFile(path.join(__dirname + "/test/test.xlsx"), (err, file) => {
if (err) {
callback(err);
} else {
//pipe archive data to the file
zipArchive.pipe(output);
zipArchive.append(file, {
name: "test.xlsx",
prefix: "test-data" //used for folder name in zip file
});
// to catch this error explicitly
zipArchive.on("error", (err) => {
callback(err);
});
//to perform end tasks while zip converted
zipArchive.on("end", () => {
fs.readFile(path.join(__dirname + "/assets/docs.zip"), (err,
success) => {
if (err) {
callback(err);
} else {
callback(null, success.toString("base64"));
}
});
});
//filnalizing the zip file for user use
zipArchive.finalize();
}
});
}
else {
callback(null, "run default case");
}
} //handler-closes
вот мой функционал. Js
/**
* OBJECTIVE: TO CREATE THE FUNCTINALITY
*/
"use strict"
const XLSX = require("xlsx");
const fs = require("fs");
const path = require("path");
var ctrlFuns = {};
ctrlFuns.xlsxToJson = function () {
return new Promise((resolve, reject) => {
fs.readFile(path.join(__dirname + "/test/test.xlsx"), (err, file) => {
if (err) {
reject(err);
} else {
let workbook = XLSX.read(file.buffer, {
type: "buffer"
});
//if workbook is null
if (!workbook) {
reject("Workbook not found.");
}
/* Getting first workbook sheetName */
let first_sheet_name = workbook.SheetNames[0];
/* Get worksheet */
let worksheet = workbook.Sheets[first_sheet_name];
/**Convert Into JSON */
resolve(XLSX.utils.sheet_to_json(worksheet, {
raw: true
}));
}
});
})
} //fun-closes
module.exports = ctrlFuns;
когда я увидел логи в облакепосмотрите тогда я получил:
START RequestId: 720cf48f-01c4-11e9-b715-9d54f664a1e8 Версия: $ LATEST 2018-12-17T06: 24: 45.756Z 720cf48f-01c4-11e9-b715-9d54f664a1e8 Ошибка: EROFS:Файловая система только для чтения, откройте '/var/task/assets/docs.zip' END RequestId: 720cf48f-01c4-11e9-b715-9d54f664a1e8
с сообщением об ошибке ниже:
{"errorMessage ":" RequestId: 98b9e509-01c7-11e9-94dc-03cfdf0dae93 Процесс завершен до завершения запроса "}