AWS Lambda中Python代码globals()报KeyError问题咨询
Lambda中
globals()[table]触发KeyError的原因及解决建议 核心原因分析
1. Lambda代码中未定义/导入T_Test
globals()仅包含当前Python模块的全局作用域内容(比如已定义的类、变量、导入的模块等)。你的生产环境代码里大概率已经在全局作用域定义或导入了T_Test类,但提供的Lambda代码中完全没有相关逻辑,自然找不到这个键。
2. 部署包结构与生产环境不一致
如果T_Test来自自定义模块,生产环境可能已将该模块加入Python路径并完成导入,但Lambda的部署包可能缺失该模块,或者代码里没写对应的导入语句,导致globals()中没有T_Test。
3. 传入的表名字符串存在隐形问题
虽然测试事件里写的是"T_Test",但EventBridge或Lambda测试事件传递时可能混入空格、换行等隐形字符,导致实际获取的table值不是精确的"T_Test",自然匹配不到全局变量。
解决建议
补充
T_Test的定义或导入
如果T_Test是自定义类,确保在Lambda代码里导入对应的模块,同时将模块包含在部署包中:# 假设T_Test在models模块中 from models import T_Test排查全局作用域内容
在代码中添加打印语句,查看globals()的实际内容,确认T_Test是否存在:print("当前全局作用域键列表:", list(globals().keys()))清洗传入的表名字符串
对拆分后的table值做清洗,避免隐形字符影响匹配:for table in tables: table_clean = table.strip() clazz = globals().get(table_clean) if not clazz: raise ValueError(f"未在全局作用域找到对应表类: {table_clean}")
内容的提问来源于stack exchange,提问作者Sachiko
相关产品推荐
相关产品推荐

