AWS Lambda Python函数初始化报错:name 'tz' is not defined
问题排查与修复方案
嘿,看了你的代码描述和遇到的问题,立刻发现了核心症结:你在代码里使用了datetime模块的方法,但完全没导入它!这也是为什么相同逻辑用Node.js能正常运行的原因——Node里的Date是全局可用的API,不需要手动导入,而Python对模块的导入要求很严格,未导入就使用会直接抛出错误。
修正后的代码
把datetime模块导入加上,同时建议给Lambda函数添加返回值(否则会触发日志警告):
import pytz import urllib3 import calendar from datetime import datetime # 新增这行关键导入 def lambda_handler(event, context): tz = pytz.timezone('Asia/Calcutta') utc = datetime.utcnow() utc = pytz.utc.localize(utc, is_dst=None).astimezone(tz) time = utc.strftime("%H") # 注意:这里已经是印度时区(IST)的小时,不是UTC了哦 text = "" textaum = "" # Lambda函数需要返回值,避免日志警告 return { "statusCode": 200, "body": f"Current IST hour: {time}" }
额外注意事项
- 你打包依赖的操作是没问题的,这次错误属于代码层面的导入遗漏,和依赖包无关
- 可以用Lambda控制台的「测试」功能快速验证修正后的代码,实时查看日志确认是否运行正常
- 如果之后还遇到依赖相关的错误,可以检查一下.zip包的结构:所有依赖包要和你的主代码文件在同一层级,不能嵌套在子文件夹里
内容的提问来源于stack exchange,提问作者weknowthe
相关产品推荐
相关产品推荐

