Flask新手部署HelloWorld至AWS Elastic Beanstalk遇ELB实例健康异常
解决Flask应用部署AWS Elastic Beanstalk健康检查失败问题
1. 修正Flask监听配置
Flask默认仅监听127.0.0.1,外部健康检查无法访问,必须改为监听所有网卡地址:
if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
2. 添加EB环境配置文件
在项目根目录创建.ebextensions文件夹,新建01-flask-config.config文件,内容如下(按需调整主文件名):
option_settings: aws:elasticbeanstalk:container:python: WSGIPath: app.py # 替换为你的Flask主文件名称,比如application.py aws:elasticbeanstalk:environment:proxy: ProxyServer: nginx Port: 5000
3. 验证健康检查路径
EB默认健康检查路径为/,确保你的Flask应用访问该路径能返回200状态码。如果根路径不返回200,可添加健康检查路由:
@app.route('/health') def health_check(): return 'OK', 200
然后在EB控制台修改健康检查路径:进入环境→配置→负载均衡器→健康检查,将路径改为/health。
4. 查看日志定位错误
通过EB控制台下载日志排查问题:
- 进入环境→日志→请求日志/完整日志
- 重点查看
/var/log/web.stdout.log和/var/log/web.stderr.log,里面会记录应用启动失败的具体原因(如依赖缺失、语法错误)
5. 确认依赖文件完整
确保项目根目录有requirements.txt,包含所有依赖项,示例:
Flask==2.3.3
EB会自动根据该文件安装依赖,缺失依赖会导致应用启动失败。
6. 本地模拟EB环境测试
使用eb local run命令在本地模拟EB环境运行,提前发现启动报错问题。
内容的提问来源于stack exchange,提问作者Huseyn Mammadli
相关产品推荐
相关产品推荐

