NodeJS 我如何部署函数代码到s3与serverless,因为它太大了

5ktev3wc  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(120)

我在sls deploy中收到此错误消息

Error:
UPDATE_FAILED: HandlerLambdaFunction (AWS::Lambda::Function)
Resource handler returned message: "Unzipped size must be smaller than 262144000 bytes

字符串
通常,我会使用--use-s3-bucket和claudiajs来处理大型代码库。我刚开始使用serverless框架,所以我对解决这个问题很感兴趣。

g6baxovj

g6baxovj1#

AWS Lambda部署有两种类型:

  • zip存档(从s3 bucket中提取的工件)
  • 容器镜像(大多数情况下从AWS ECR中提取)

Zip存档方法有一个压缩50 MB的硬限制,部署包解压250 MB。部署包包括任何压缩的代码和相关的层(如果适用)。
解决这个问题的一种方法是使用打包工具,如webpack或类似工具,来缩小/压缩部署包,这些工具在很多情况下可以显着减少构建的大小。
使用额外的打包工具的缺点是,您必须在构建过程中添加额外的步骤,并配置这些工具以满足您的需求,在某些情况下,这可能不是超级直接的。
容器镜像部署类型有10 GB的限制,因此您可以将更多的东西打包到构建中,包括第三方二进制文件等,但这样您就必须将Docker安装程序添加到您的项目中,如果它还没有在那里。
其中一个好处是,使用Docker镜像,您可以使用与AWS Lambda相同的环境在本地调试函数。
有很多关于如何将lambda部署为AWS和其他公司提供的容器镜像的文档/教程。

相关问题