【发布时间】:2021-06-03 21:18:56
【问题描述】:
我正在尝试减小使用 aws-sdk 的 nodejs lambda 包的大小。 这是原始的 lambda package.json 文件:
{
"name": "lambdanodejs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"aws-sdk": "^2.784.0",
"bluebird": "^3.7.2",
"ioredis": "^4.19.2",
"redis": "^3.0.2",
"redis-clustr": "^1.7.0"
}
}
整体大小为57MB,54属于aws-sdk。
为了减小大小,我尝试使用特定的客户端服务 (v3 sdk)。 关注:https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-secrets-manager/package.json
{
"name": "lambdanodejs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@aws-sdk/client-dynamodb": "^3.7.0",
"@aws-sdk/client-secrets-manager": "^3.7.0",
"bluebird": "^3.7.2",
"ioredis": "^4.19.2",
"redis": "^3.0.2",
"redis-clustr": "^1.7.0"
}
}
现在 npm install 会产生更大的大小,大约 190+MB。 同样在 node_modules 中,我看到很多使用以前的 package.json 安装时不存在的目录。 这个 v3 aws-sdk 应该更轻。 我错过了什么吗?
谢谢!
【问题讨论】:
-
您能分享一下您是如何捆绑工件的吗?或者你只是压缩你的源文件夹,包括
node_modules文件夹? -
@s.hesse 我正在压缩 node_modules 以及其他文件。这些提到的大小是在压缩之前,但根据文章/博客,它的大小应该更小,至少与 aws-sdk 相比,它应该小得多。
-
好的。在迁移到新的 SDK 之前,您是否清理了
node_modules文件夹?也许旧的 SDK 文件夹仍然存在。 -
@s.hesse 是的,我已经删除了 package-lock.json 和 node_modules 。
-
有趣.. 所以我只是以您的示例
package.json(使用 AWS SDK v3)并运行npm install并在node_modules中有大约 22MB 的数据。不知道你还能做些什么......或者,尝试使用类似esbuild的东西来生成一个工件 -> 它会将所有内容捆绑到一个文件中并丢弃所有不必要的代码。
标签: node.js amazon-web-services aws-lambda aws-sdk-nodejs