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

使用Terraform配置CloudFront时lambda_function_association内存超限报错如何解决

报错根本原因

CloudFront关联的Lambda@Edge函数对内存大小有明确的规则限制,你当前使用的viewer-response属于viewer端触发事件,允许的最大内存为128MB,而你关联的Lambda函数版本内存配置为1024MB,超出上限触发报错。

排查步骤
  • 核对你当前使用的Lambda函数版本配置:找到ARN为arn:aws:lambda:us-eas-1-myaccount:function:myaccount-dev-cloudfrontheaders1:2的函数(末尾的:2代表版本号),确认其内存配置是否为1024MB。注意不要仅核对$LATEST版本的配置,CloudFront要求关联带固定版本号的ARN,必须确认对应版本的参数。
  • 核对事件类型对应的内存限制:
    • viewer端事件(viewer-request、viewer-response):最大内存128MB
    • origin端事件(origin-request、origin-response):最大内存1024MB
修复方案

根据你的业务场景二选一即可:

方案1:保留viewer-response事件,修改Lambda配置

如果你的逻辑必须在用户请求返回阶段触发,直接调整Lambda函数的内存配置为128MB,重新发布新版本,更新CloudFront关联的ARN即可。
如果你的Lambda也是通过Terraform管理,参考配置修改:

resource "aws_lambda_function" "cloudfront_headers" {
  // 其他原有配置不变
  memory_size = 128 // 内存改为128MB
  publish = true // 开启自动发布版本
}

resource "aws_cloudfront_distribution" "clientcloudfrontdistrotest" {
  default_cache_behavior {
    // 其他原有配置不变
    lambda_function_association {
      event_type   = "viewer-response"
      include_body = false
      lambda_arn = aws_lambda_function.cloudfront_headers.qualified_arn // 直接引用带版本的ARN,无需手动维护
    }
  }
}

修改后重新执行terraform apply即可。

方案2:调整事件类型为origin端事件,无需修改Lambda内存

如果你的逻辑(比如修改响应头)不需要针对每个用户请求执行,仅需要在CloudFront回源拿到响应时执行,直接把事件类型改为origin-response即可,该事件类型允许最大1024MB内存,无需调整Lambda配置。

lambda_function_association {
  event_type   = "origin-response" // 仅修改此行即可
  include_body = false
  lambda_arn =  var.lambda_arn
}
额外注意事项

Lambda@Edge要求函数必须部署在us-east-1区域,你报错信息里的ARN区域为us-eas-1大概率是拼写错误,建议同步核对,避免后续出现其他关联错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:48:04