我正在使用无服务器框架以及lambda层和一些lambdas函数。我必须包括aws-sdk才能支持某些功能。
使用aws-sdk的lambda层大小为80MB,其中aws-sdk仅需40MB。
我知道的是Lambda函数默认包含aws-sdk。但这是否也意味着lambda层?
注释
答案 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。