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

使用Terraform部署AWS Lambda Layer报RequestEntityTooLargeException如何解决

报错根因

AWS Lambda 直接通过本地文件上传的层版本压缩包最大限制为50MB,你当前的压缩包大小为99MB,超出直传阈值,因此触发RequestEntityTooLargeException错误。

解决方案

方案1:优化压缩包体积

如果压缩后体积可以降到50MB以内,可直接保留原有配置逻辑,仅优化压缩包即可:

  • 清理依赖冗余文件:删除Python依赖中的__pycache__目录、.pyc缓存文件、测试用例、说明文档、示例代码等非运行必需文件
  • 精简依赖安装:使用pip install <依赖包> --no-cache-dir命令安装依赖,避免引入pip缓存文件,同时移除所有未实际使用的依赖包
  • 提高压缩率:使用7-Zip等工具选择最高压缩率生成zip包,通常可比系统默认zip工具压缩率高20%~40%

方案2:通过S3中转上传

如果优化后压缩包仍超过50MB,可采用官方支持的S3中转方案,该方案支持最大50MB以上、解压后总大小不超过250MB的层上传:

  1. 先将你的a.zip上传到和Lambda同区域的S3存储桶中
  2. 修改layers.tf配置,替换原有filename参数为S3相关参数,示例配置如下:
resource "aws_lambda_layer_version" "aa" {
  s3_bucket = "替换为你的S3存储桶名称"
  s3_key    = "替换为a.zip在S3桶中的对象路径,例如layers/aa/a.zip"
  layer_name = "aa"

  compatible_runtimes = ["python3.8"]
}

注意:采用该方案需要保证运行Terraform的IAM身份拥有对应S3对象的s3:GetObject权限,否则会触发权限类报错。

方案3:拆分Lambda层

如果压缩包解压后的总大小超过250MB(Lambda层解压后硬限制),需要将依赖拆分为多个独立的Lambda层,确保所有层叠加后的解压总大小不超过250MB即可。

修改配置完成后重新执行terraform apply即可完成部署。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:15:00