为了减少无服务器包的大小,我试图将aws-sdk排除在部署之外。
我的印象是aws-sdk npm包默认包含在aws lambda运行时中。当我创建一个新函数时,我可以很好地控制台记录aws-sdk版本。
当我用serverless上传的较大的lambda执行时,它返回一个导入错误,因为找不到aws-sdk
"errorType": "Runtime.ImportModuleError",
"errorMessage": "Error: Cannot find module 'aws-sdk'
lambda使用运行时nodejs12.x
如果你能帮忙的话,我将不胜感激。
1条答案
按热度按时间sd2nnvve1#
我猜这个问题可能是针对无服务器框架如何打包和部署Lambda函数的。
以下是您可以采取的一些步骤,以排除故障并可能解决此问题:
1.检查您的无服务器配置:验证您的Serverless Framework配置(通常在
serverless.yml
中),以确保您没有意外地将aws-sdk
模块从打包中排除。包含aws-sdk
不需要特殊配置,因为它是由AWS Lambda为Node.js运行时自动提供的。serverless.yml
配置示例:1.请检查您的部署包:运行Serverless Framework部署后,检查部署包的内容。您通常可以在
.serverless
目录中找到此软件包。确保aws-sdk
模块存在于软件包中。1.确保没有自定义重复:如果您已将自定义
package.json
显式添加到无服务器项目并指定依赖项,请确保未从自定义package.json
文件中排除aws-sdk
。如果你做了,删除它。1.尝试不同的Node.js插件:如果问题仍然存在,您可以尝试更改Lambda函数的Node.js运行时版本。例如,将其更改为
nodejs14.x
或更高版本,以查看问题是否仍然存在。1.更新Serverless Framework:确保您使用的是最新版本的Serverless Framework。旧版本可能与某些AWS功能或运行时存在兼容性问题。
1.检查本地覆盖:一些开发工具和插件允许本地覆盖依赖项。检查开发环境中是否存在可能导致此问题的任何本地重写。
在大多数情况下,
aws-sdk
应该在AWS Lambda Node.js运行时中默认可用,无需任何额外配置。