在部署之前从本地 node_modules 中删除 aws-sdk 的选项
单独的 aws-sdk 是一个巨大的节点模块(解压后超过 20mb),连同它的所有依赖项,它的权重足以防止在 lambda 平台上进行浏览器内代码编辑。
用户可能想要使用依赖于 aws-sdk 的东西(例如@awspilot/dynamodb
)——但这将与 lambda 的本机 aws-sdk 模块一起运行良好。
目前,您可以手动删除 aws-sdk 及其依赖项,从而以我的案例为例,将您的函数 package.zip 缩小 25 倍。
无服务器是否可以在打包/部署之前删除这些不必要的模块?
不适用
嘿@davepwsmith感谢您的开放👍
您可以使用exclude
/ include
规则来定义 glob,这些规则将描述部署包中应排除/包含的内容(请参阅:https://serverless.com/framework/docs/providers /aws/guide/packaging#exclude--include)。
我们还在处理可能相关的#2709。
FWIW:_现在_添加aws-sdk
作为devDependency
就足够了。 然后它将被自动排除,因为 AWS Lambda Node.JS 运行时嵌入了 aws-sdk,您的 Lambda 应该仍然可以工作(我的 :))
@ChristianUlbrich感谢分享!
只需将aws-sdk
移动到devDependency
就减少了 9mb 的包大小🔥
最有用的评论
FWIW:_现在_添加
aws-sdk
作为devDependency
就足够了。 然后它将被自动排除,因为 AWS Lambda Node.JS 运行时嵌入了 aws-sdk,您的 Lambda 应该仍然可以工作(我的 :))