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

CloudFront关联Lambda函数时触发InvalidLambdaFunctionAssociationException错误

解决CloudFront关联Lambda时的InvalidLambdaFunctionAssociationException错误

嘿,这个错误其实说得相当直白——你用来关联CloudFront的Lambda函数用了Python 2.7运行时,但当时CloudFront要求这类触发函数必须使用Node.js 6.10(不过现在AWS已经支持更多新版本的运行时了,比如Python 3.8+、Node.js 14.x及以上,我们后面会详细说到)。

下面是具体的修复步骤,一步步来:

1. 明确CloudFront支持的Lambda运行时

首先要搞清楚,CloudFront触发的Lambda函数(包括Lambda@Edge)有严格的运行时限制:Python 2.7早就被AWS淘汰,而且从一开始就不被CloudFront的关联机制支持。目前AWS官方支持的运行时包括:

  • Node.js 14.x、16.x、18.x
  • Python 3.8、3.9、3.10、3.11
    建议选一个较新的稳定版本,比如Python 3.9或者Node.js 16.x,兼容性和安全性都更好。

2. 迁移Lambda函数到支持的运行时

  • 打开AWS Lambda控制台,找到你的domain_redirects函数
  • 切换到「配置」标签页,找到「运行时设置」,点击「编辑」
  • 选择一个CloudFront支持的运行时,比如Python 3.9
  • 检查你的Python代码是否兼容3.x版本:比如把print "xxx"改成print("xxx"),处理好2.x到3.x的语法差异(代码量不大的话很快就能搞定)
  • 保存更改后,记得发布一个新的函数版本(比如版本2),因为CloudFront关联需要指定具体的版本ARN

3. 重新关联CloudFront与更新后的Lambda函数

  • 回到CloudFront控制台,找到你的Web分配
  • 进入「行为」标签页,编辑你之前配置的那个行为
  • 在「Lambda函数关联」部分,替换成新的函数ARN(比如arn:aws:lambda:us-east-1:316211033416:function:domain_redirects:2)
  • 保存更改,然后等待CloudFront完成部署(这个过程通常需要几分钟)

额外注意事项

  • 如果你用的是Lambda@Edge,函数必须部署在us-east-1区域(你的函数已经是这个区域,没问题)
  • 确保Lambda的执行角色有允许CloudFront调用它的权限:在角色的信任策略里,要添加cloudfront.amazonaws.com作为信任实体
  • 要是你不想修改Python代码,也可以把重定向逻辑改成Node.js代码,用报错里提到的nodejs6.10(不过这个版本也比较老,还是推荐用更新的Node.js版本更稳妥)

你遇到的错误原文:
com.amazonaws.services.cloudfront.model.InvalidLambdaFunctionAssociationException: The function has an invalid runtime for functions that are triggered by a CloudFront event: python2.7 Expecting: nodejs6.10 Function: arn:aws:lambda:us-east-1:316211033416:function:domain_redirects:1 (Service: AmazonCloudFront; Status Code...)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:01:45