Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda 如何减少无服务器部署的大小?_Aws Lambda_Serverless Framework_Serverless - Fatal编程技术网

Aws lambda 如何减少无服务器部署的大小?

Aws lambda 如何减少无服务器部署的大小?,aws-lambda,serverless-framework,serverless,Aws Lambda,Serverless Framework,Serverless,我正在使用无服务器框架部署aws lambda函数。我的问题是每次我部署sls时都会部署一个(44MB)sls deploy-f any_fn。当有一个node\u modules文件夹(可能很大)时,我也遇到过类似的问题 是否有一种方法可以通过只上传一次公共文件(以及所有功能)来减少上传大小?因为现在它一次又一次地压缩和部署同一个二进制文件,尽管它从未改变。没有办法按照你的建议去做。AWS Lambda要求您每次上载整个包,包括所有依赖项。所有内容都必须位于部署到Lambda的zip文件中。这

我正在使用无服务器框架部署aws lambda函数。我的问题是每次我部署sls时都会部署一个(44MB)
sls deploy-f any_fn
。当有一个
node\u modules
文件夹(可能很大)时,我也遇到过类似的问题


是否有一种方法可以通过只上传一次公共文件(以及所有功能)来减少上传大小?因为现在它一次又一次地压缩和部署同一个二进制文件,尽管它从未改变。

没有办法按照你的建议去做。AWS Lambda要求您每次上载整个包,包括所有依赖项。所有内容都必须位于部署到Lambda的zip文件中。

这是我的解决方案:

  • 将大文件上传到S3 bucket
  • 下载全局作用域下执行的函数中的所有S3文件,不在作用域中 of
    exports.handler
    ,因此代码将只执行一次(对于 容器)
  • 为了确保容器的重复使用,您应该保留 lambda使用CloudWatch定时器加热

  • 这只允许您部署小文件。

    我想到了一种方法,但如果可行,需要一些输入。如果我创建一个无服务器代理函数,即使用无服务器创建的lamba函数,该函数接受一个文件作为输入参数,该怎么办。然后,此函数将此输入文件和静态文件(来自S3 bucket)组合在一起,然后使用
    AWS.Lambda
    nodejs API实际部署此函数。通过这种方式,我只发送函数更改,其余的部署是通过代理lambda函数完成的,用静态文件创建我的新lambda函数。这有什么意义吗?我知道这需要很多工作,但它能工作吗?如果你只是想找一些能为你管理部署的东西,这样你就不必从本地计算机上构建和上传最终的软件包,那么你可以使用像AWS CodePipeline这样的持续集成/持续交付服务。谢谢你。。我想我将开始研究如何使用AWS codepipeline将lambda函数和所有这些静态资产部署到AWS lambda。另外,按照此功能请求将S3传输加速添加到Serverless:您能告诉我们更多关于您的函数及其依赖项的信息吗?从那以后,可能有办法缩小它的大小。@dashmug我已经两次遇到这个问题,一次使用这个项目(44MB),另一次使用这个项目(24MB)。不知何故,这不存在安全问题吗?@serdarsenay问题在哪一部分?如果您引用s3 bucket,那么将其定义为private应该不是问题。AWS已通过PCI DSS认证,包括服务S3。这是最好的答案,向上投票,非常感谢