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

容器镜像部署AWS Lambda时YAML定义的环境变量未找到

问题根因

sam build仅负责项目编译、容器镜像本地构建,不会读取template.yaml中的资源配置向Lambda服务端下发更新。你构建后手动推送镜像、手动创建Lambda函数的流程,完全没有应用模板里定义的环境变量、超时等配置,函数运行时自然读不到BUCKET_NAME。

补充说明:Lambda环境变量是运行时由Lambda服务动态注入的,不会打包进容器镜像。无论怎么修改模板、重新构建镜像,只要服务端函数配置没更新,就读不到对应变量。把环境变量写在Globals全局段还是单函数Properties段,都遵循这个逻辑。

解决方法

两种方案可按需选择:

  • 方案一:使用SAM标准部署流程
    执行完sam build后,直接运行sam deploy --guided,按照命令行引导完成参数确认,SAM会自动完成ECR仓库创建、镜像推送、Lambda函数创建/更新全流程,模板里定义的所有配置(环境变量、超时时间、CPU架构等)都会自动应用到函数上,部署完成后即可正常读取环境变量。
  • 方案二:手动创建函数时同步配置环境变量
    如果你需要保留手动推送镜像、手动创建函数的流程,不需要依赖template.yaml中的配置,在Lambda控制台创建/编辑函数时,找到「环境变量」配置板块,手动添加键为BUCKET_NAME、值为对应桶名的条目,保存配置后函数即可正常读取。

配置完成后,可以直接在Lambda控制台的「配置-环境变量」页面检查条目是否存在,能看到对应键值对就说明配置生效,不会再抛出KeyError异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:39:15