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

AWS Lambda镜像未加载最新代码问题求助

AWS Lambda镜像未加载最新代码问题求助

看起来你遇到了Lambda Docker镜像更新后不生效的典型问题,我帮你梳理几个最可能的原因和排查步骤,按顺序来应该能快速解决:

1. 先确认Lambda函数是否使用了最新的镜像版本

Lambda不会自动监听ECR的镜像更新,哪怕你推了新镜像到ECR,Lambda还是会沿用之前配置的旧镜像版本。你可以:

  • 打开Lambda控制台,进入目标函数,切换到「代码」标签页,查看「镜像」区域显示的URI是不是你刚推送的3xxxxxxxxxxx0.dkr.ecr.us-east-1.amazonaws.com/demo-lambda:$MY_DOCKER_IMAGE_VERSION
  • 如果版本不对,手动点击「部署新镜像」选择最新版本;或者用CLI命令更新:
    aws lambda update-function-code --function-name 你的Lambda函数名 --image-uri 3xxxxxxxxxxx0.dkr.ecr.us-east-1.amazonaws.com/demo-lambda:$MY_DOCKER_IMAGE_VERSION
    

2. 重点排查:Buildspec里的镜像名称不一致!

我注意到你构建镜像的命令是:

docker image build -t 359772415770.dkr.ecr.us-east-1.amazonaws.com/demolambda:$MY_DOCKER_IMAGE_VERSION .

但推送镜像的命令是:

docker push 359772415770.dkr.ecr.us-east-1.amazonaws.com/demo-lambda:$MY_DOCKER_IMAGE_VERSION

这里镜像仓库名称差了个横杠!demolambda vs demo-lambda——你其实把新构建的镜像推到了另一个仓库里,Lambda用的还是原来demolambda仓库的旧镜像!这大概率是核心问题!

3. 验证ECR里的镜像内容是否正确

如果上面的名称没问题,你可以本地拉取最新镜像验证代码:

# 先登录ECR
aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin 3xxxxxxxxxxx0.dkr.ecr.us-east-1.amazonaws.com
# 拉取镜像
docker pull 3xxxxxxxxxxx0.dkr.ecr.us-east-1.amazonaws.com/demo-lambda:$MY_DOCKER_IMAGE_VERSION
# 查看容器内的app.py内容
docker run --rm 3xxxxxxxxxxx0.dkr.ecr.us-east-1.amazonaws.com/demo-lambda:$MY_DOCKER_IMAGE_VERSION cat app.py

看看输出里有没有新增的print('\nevent = ', event)语句,如果没有,说明构建过程没正确打包新代码,检查下buildspec的工作目录是否正确,或者构建时有没有意外忽略了app.py的修改?

4. 处理Lambda的镜像缓存

如果以上都确认没问题,但还是运行旧代码,那可能是Lambda的镜像缓存在作怪。Lambda会缓存镜像层来优化冷启动速度,你可以通过修改函数的一个小配置(比如添加一个临时环境变量,保存后再删掉)来强制Lambda重新拉取镜像,触发冷启动加载新内容。

另外顺便提一句:你的app.py里用到了boto3但没写import boto3,这个后续可能会报错,记得补上哦!

备注:内容来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:08:11