Python开发Alexa技能上传Lambda超时问题求助
关于Lambda上传ZIP超时问题的分析与排查
首先可以明确说:这种上传阶段的超时几乎不可能是Python运行时的BUG——毕竟上传操作还没到代码执行的环节,和Lambda的Python运行时环境根本没交互上。结合你的情况(删函数换账号都没用),大概率是你的打包方式、包本身或者网络问题导致的,下面是具体的排查方向:
ZIP包体积超标或打包冗余
Lambda控制台直接上传ZIP的上限是50MB,如果你的包接近甚至超过这个大小,浏览器上传很容易因为传输慢触发超时。很多Python开发者会不小心把本地的venv虚拟环境整个打包进去,这会让包体积暴增。
解决办法:- 只打包必要的依赖:用
pip install --target ./package -r requirements.txt把依赖安装到单独的package目录,然后把你的业务代码和package一起压缩,完全剔除venv。 - 若包还是过大,改用S3中转上传:把ZIP传到S3,再从S3导入到Lambda,这种方式支持最大250MB的包,稳定性也更高。
- 只打包必要的依赖:用
网络连接不稳定
浏览器控制台的上传对网络波动比较敏感,哪怕换了AWS账号,本地网络到AWS区域的连接差还是会导致超时。
解决办法:- 切换到更稳定的网络(比如有线网络)试试。
- 改用AWS CLI上传,命令行的上传逻辑更健壮:
aws lambda update-function-code --function-name 你的函数名 --zip-file fileb://你的包名.zip
ZIP包内存在异常文件
如果包里包含大量小文件、符号链接、或者权限异常的文件,Lambda控制台在解压处理包的时候可能会卡住超时。
解决办法:- 打开ZIP包检查内容,删除日志、测试文件、
__pycache__这类无关文件。 - 打包时用过滤规则排除冗余:
zip -r your-skill-package.zip . -x "venv/*" "__pycache__/*" "*.log" "tests/*"
- 打开ZIP包检查内容,删除日志、测试文件、
极端情况:AWS区域服务临时故障
这种概率极低,但如果以上都排查过还是不行,可以查看AWS的服务状态页面,确认你使用的区域Lambda服务是否正常。不过你换了账号还出现,基本可以排除这个可能。
总结下来,先从打包方式和包体积入手排查,这是最常见的原因。
内容的提问来源于stack exchange,提问作者Nikhil Wagh
相关产品推荐
相关产品推荐

