如何测试AWS公有EC2实例上的Flask API并解决连接失败问题
Flask API无法通过EC2公网IP访问的解决方案
问题背景
创建公有EC2实例并部署Flask API后,在实例内部执行python run.py,输出显示服务监听http://127.0.0.1:5000,但本地Windows命令行执行curl http://<EC2_public_IP>:5000/时,返回错误:Failed to connect to <EC2_public_IP> port 5000 after 2159 ms: Couldn't connect to server。当前EC2安全组仅开放80、443、22端口。
解决步骤
1. 修改Flask服务监听地址
Flask默认仅绑定本地回环地址127.0.0.1,仅允许实例内部访问,需调整为绑定所有网卡:
- 命令行启动修改:
python run.py --host=0.0.0.0 - 代码层面修改:
在Flask项目的启动文件中,修改app.run参数:if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
2. 更新EC2安全组入站规则
当前安全组未开放5000端口,需添加允许外部访问该端口的规则:
- 登录AWS控制台,进入目标EC2实例的安全组配置页面
- 添加一条入站规则:
- 规则类型:自定义TCP
- 端口范围:5000
- 源地址:测试阶段可设为
0.0.0.0/0(允许所有IP访问),生产环境建议指定你的本地公网IP
3. 验证服务可用性(可选)
在PuTTY连接的EC2实例内部执行:
curl http://localhost:5000/
若能正常获取API响应,说明Flask服务本身运行正常,问题仅存在于外部访问的网络配置。
内容的提问来源于stack exchange,提问作者hitaton
相关产品推荐
相关产品推荐

