You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何测试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端口,需添加允许外部访问该端口的规则:

  1. 登录AWS控制台,进入目标EC2实例的安全组配置页面
  2. 添加一条入站规则:
    • 规则类型:自定义TCP
    • 端口范围:5000
    • 源地址:测试阶段可设为0.0.0.0/0(允许所有IP访问),生产环境建议指定你的本地公网IP

3. 验证服务可用性(可选)

在PuTTY连接的EC2实例内部执行:

curl http://localhost:5000/

若能正常获取API响应,说明Flask服务本身运行正常,问题仅存在于外部访问的网络配置。

内容的提问来源于stack exchange,提问作者hitaton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 12:35:17