我有一个使用无服务器部署的 lambda 函数。它是使用node6.10
运行时部署的,因此我决定改为使用运行时重新部署服务node8.10
。
但是,在进行此重新部署后,我遇到了一个奇怪的问题,即我无法调用该函数并且由于文件大小太大(60mb+)而无法再部署对该函数的更新。我能够通过卸载并重新安装来解决此问题serverless-plugin-optimize
。
这解决了文件大小问题(现在大约 2mb),但我仍然无法调用该函数。尝试调用它会在 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 控制台中查看此内容,我得到以下信息:
Lambda 目录中列出的 2.6mb 上传:
我无法解释为什么我会遇到这个问题,或者切换到node8.10
会导致什么。在文件之外,serverless.yml
没有任何代码从工作node6.10
版本更改。有没有人遇到过这个问题或知道任何可以解决它的方法?