Я вызываю лямбду через aws -sdk с явным RequestResponse
const Lambda = require("aws-sdk/clients/lambda");
const lambda = new Lambda({region: "region"});
const params = {
FunctionName: "myFunctionArn",
InvocationType: "RequestResponse",
Payload: JSON.stringify({
//... my payload
})
};
lambda.invoke(params).promise().then(data => {
console.log(data);
});
Это длительное задание> ~ 5 минут и мое время ожидания установлено на 10 минут . Я загружаю mp3, сжимаю его, сохраняю в S3 и затем возвращаю URL-адрес клиенту. В cloudwatch нет ошибок, и процесс идет гладко, mp3 хранится с более низким качеством до S3, однако функция выполняется два раза.
Если файл mp3 достаточно мал (~ 8 МБ), есть только одно выполнение, однако, если это большой файл (~ 100 МБ), он будет выполнен два раза и, конечно, функция отключится. Я использую папку / tmp для временного хранения файла, я также удалю их после того, как mp3 будет безопасно сохранен в S3. Я разбросал свою функцию с журналированием, и абсолютно никаких признаков ошибок и это происходит каждый раз, а не спорадически.
Это мои журналы Cloudwatch
Спасибо
EDIT_1: я пытался добавить некоторые параметры для лямбда-клиента
const Lambda = require("aws-sdk/clients/lambda");
const lambda = new Lambda({
region: "ap-southeast-1",
httpOptions: { timeout: 10 * 60 * 1000, connectTimeout: 10 * 60 * 1000 }
});
Но, похоже, ничего не изменилось
EDIT_2: похоже, что теперь это происходит и для краткосрочных задач и является совершенно случайным. Я в недоумении, я действительно не знаю, что делать