Nodejs 模块化 aws-sdk v3 大小不断增加

gre*_*ons 5 amazon-web-services node.js aws-lambda aws-sdk-nodejs

我正在尝试减小使用 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

整体大小为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"
  }
}
Run Code Online (Sandbox Code Playgroud)

现在 npm install 会产生更大的大小,大约 190+MB。另外,在 node_modules 中,我看到很多目录,这些目录在使用以前的 package.json 安装时不存在。这个 v3 aws-sdk 应该更轻。我错过了什么吗?

谢谢!

Siv*_*nth 1

  • 不要将 aws-sdk 推送到 lambda 函数。如果你想在本地开发环境中使用它,请在全局安装它。
  • Lambda 将在运行时提供所有必需的 SDK 模块(v2 和 v3),只需将它们导入到代码中即可。
  • 不要将 aws-sdk 捆绑在 zip 中。
  • 如果你的 zip 大小越来越大,请使用 lambda 中的层。
  • 将 node_moudles 导入到 lambda 层。
  • 然后将您的代码上传到 lambda。

  • lambda nodejs 环境似乎预装了 aws-sdk v2,但没有预装 v3:/sf/ask/4629099541/ (3认同)