Безсерверное развертывание Lambda в node8.10 без загрузки кода
У меня есть лямбда-функция, развернутая с помощью Serverless. Был развернут с node6.10
во время выполнения, поэтому я решил повторно развернуть службу с node8.10
время выполнения вместо.
Однако после этого повторного развертывания я столкнулся со странной проблемой, когда я не мог вызвать функцию и больше не мог развертывать обновления для функции, поскольку размер файла был слишком большим (60 МБ +). Я смог решить эту проблему, удалив и переустановив serverless-plugin-optimize
,
Это решило проблему размера файла (теперь это около 2 МБ), но я все еще не могу вызвать функцию. Попытка вызвать его приводит к следующему журналу в CloudWatch:
Unable to import module 'lambda/index': Error
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
Я ожидал, что путь к файлу в моем serverless.yml
потому что функция была неправильной или не экспортировалась правильно.
./serverless.yml
functions:
funcOne:
handler: lambda/index.handler
./lambda/index.js
exports.handler = function (event, context) {
// execution code
};
Однако это не так, я знаю это, потому что настройка debug: true
для serverless-plugin-optimize
оставляет за _optimize
папка с моим уменьшенным кодом. Однако, несмотря на то, что он присутствует локально, кажется, что он не выполняет загрузку в Lambda.
Просматривая это в консоли AWS, я получаю следующее:
2,6 Мб загрузки в списке в каталоге Lambda:
Ошибка в редакторе кода консоли Lambda
Файл 60 Мб все еще указан в корзине развертывания S3
Я не могу объяснить, почему я получаю эту проблему или как насчет перехода на node8.10
вызовет это. Вне serverless.yml
файл ни один код не был изменен с рабочего node6.10
версия. Кто-нибудь сталкивался с этой проблемой раньше или знает что-нибудь, что может исправить это?
1 ответ
Теперь я успешно решил эту проблему. Я не знаю, почему это так, но проблема, похоже, заключалась в развертывании на node8.10 с использованием более старой версии Serverless (1.27.2). Обновление до последней версии Serverless (1.32.0) исправило это немедленно.