У меня есть облачная функция, запускаемая корзиной хранения на google.storage.object.finalize
. В этой функции я загружаю файл, который запускает функцию, и выполняю некоторые преобразования данных. Если размер этого файла ~ 5 КБ, функция выполняется должным образом. Если размер файла составляет ~ 200 МБ, обратный вызов file.download
никогда не запускается, и Stackdriver не показывает ничего, кроме Function execution took 14 ms, finished with status: 'ok'
.
. Я понимаю, что существует ограничение в 10 МБ для файлов, загружаемых через HTTP в функции, запускаемые по HTTP, но эта функциязапускается облачным хранилищемВ ответе на на этот вопрос говорится, что ограничение на 10 МБ не применяется к функциям, инициируемым памятью, поэтому я подозреваю возможную проблему тайм-аута.
Для этой функции установлено ограничение памяти 2 ГБ, 5минутное время ожидания, и все сегменты / функции находятся в одном регионе. Конечно, этого будет достаточно ресурсов для передачи и обработки файла размером 200 МБ (локальное профилирование показывает, что процесс завершается через несколько секунд, оставаясь при объеме памяти менее 512 МБ).
const { Storage } = require('@google-cloud/storage');
const storage = new Storage();
const uploadBucket = storage.bucket("<bucket name>");
module.exports = (data, context) => {
console.log('Getting file ref'); // Logged regardless of file size
const file = uploadBucket.file(<file name>);
file.download(function (err, buffer) {
console.log('Starting file processing');
// With a smaller file, this callback runs as expected.
// With larger files, this code is never reached.
});
};
Имею ли я неверное представление о доступной пропускной способностимежду функцией и корзиной хранения или это предлагает другую проблему?