lambda 层是否包含 aws-sdk

ِAl*_*ush 3 amazon-web-services aws-lambda serverless-framework aws-lambda-layers

我正在使用无服务器框架以及 lambda 层和几个 lambdas 函数。我必须包含 aws-sdk 才能支持某些功能。

aws-sdk 的 lambda 层大小为 80MB,而 aws-sdk 单独占用 40MB。

我所知道的是 Lambda 函数默认包含 aws-sdk。但这是否也意味着 lambda 层?

笔记

  • 我尝试删除 aws-sdk 并部署,并且 lambda 函数显示错误“找不到模块 aws-sdk”
  • NODE_PATH: "./:/opt/node_modules" 包含在 serverless.yml 中(这是否会导致默认情况下不包含 aws-sdk)?
  • 运行时是 nodejs10.x

Gab*_*mbe 5

Lambda 层使您能够将额外的代码和内容提取到 AWS Lambda 函数的执行环境中。

默认情况下,Node.js Lambda 运行时环境为您提供 AWS JavaScript SDK 的一个版本。但作为最佳实践,并且实际上,因为您可能希望使用不属于 Lambda 执行环境中自动包含的版本的最新版本的 SDK 的较新功能,您可以打包所需的 AWS JavaScript SDK 版本稍后转换为 Lambda,以便它覆盖执行环境中存在的 SDK 版本。

就是这样:

mkdir lambda-layer
cd lambda-layer/
npm install aws-sdk
mkdir nodejs
mv node_modules/ nodejs/
zip -r aws-sdk.zip nodejs/

aws lambda publish-layer-version --layer-name aws-sdk --zip-file fileb://aws-sdk.zip --compatible-runtimes nodejs10.x --description "My AWS SDK"
Run Code Online (Sandbox Code Playgroud)

根据aws lambda publish-layer-version上面的输出报告,此 Lambda 层的大小为 6.1 兆字节。