You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAM-CLI部署Scala Lambda引入aws-java-sdk出现包大小超限问题

问题根源

你部署报错的核心原因是引入了全量AWS Java SDK依赖:"com.amazonaws" % "aws-java-sdk" % "1.11.46",该包包含所有AWS服务的客户端实现,打包后体积极大,解压后超出了AWS Lambda要求的250MB(262144000字节)最大解压包体积限制,因此触发400错误。

解决方案

可根据你的实际业务需求选择以下任意一种方案:

  • 替换全量SDK为对应服务的单独依赖:如果只需要用到部分AWS服务的能力,仅引入对应服务的轻量依赖包即可,大幅降低打包体积。比如你当前代码仅涉及API Gateway和Lambda相关逻辑,可将全量SDK替换为:
"com.amazonaws" % "aws-java-sdk-lambda" % "1.11.46"
"com.amazonaws" % "aws-java-sdk-apigateway" % "1.11.46"

后续用到其他AWS服务时,再按需引入对应单独依赖包即可,例如S3对应aws-java-sdk-s3、DynamoDB对应aws-java-sdk-dynamodb。

  • 配置sbt打包压缩规则:使用sbt-assembly插件打包时,添加冗余文件剔除规则,删掉不需要的META-INF文件、重复依赖、调试信息等,进一步压缩包体积,参考配置如下:
assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs @ _*) => MergeStrategy.discard
  case x => MergeStrategy.first
}
  • 升级到AWS SDK v2:AWS SDK v2做了架构级的体积优化,相同功能下打包体积比v1小30%以上,同时支持按需引入模块,新项目更推荐直接使用v2版本SDK。
  • 拆分依赖或使用容器部署:如果确实需要引入大量第三方依赖,总解压体积超过250MB,可将公共依赖(如AWS SDK、Scala核心库)打包为Lambda层(Lambda Layer),函数代码仅打包业务逻辑;也可以选择使用Lambda容器镜像部署,容器镜像的大小限制为10GB,可完全满足大依赖场景的需求。

内容的提问来源于stack exchange,提问作者andreacappelletti97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:54:03