lambda层包含aws-sdk吗

时间:2019-11-05 02:46:42

标签: 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:serverless.yml中包含“ ./:/ opt / node_modules”(这会导致aws-sdk默认不包括在内)吗?
  • 运行时为nodejs10.x

1 个答案:

答案 0 :(得分:1)

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

默认情况下,Node.js Lambda运行时环境为您提供了一个AWS JavaScript SDK版本。但是,作为最佳实践,实际上,因为您可能希望使用SDK的最新版本的较新功能,这些功能不属于Lambda执行环境中自动包含的版本的一部分,因此您可以打包所需的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"

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