Flask 应用程序端口拒绝连接 ec2

Dar*_*der 1 amazon-ec2 flask aws-security-group

我有一个 Flask 应用程序,我将其部署在 EC2 实例上。该应用程序启动得很好:

ubuntu@ip-something:~/webservices$ python service/texting_service.py 
 * Serving Flask app "texting_service" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 146-396-474

Run Code Online (Sandbox Code Playgroud)

当我ssh进入此 EC2 实例并使用 调用该服务时localhost,它会返回预期的响应。但是,当我尝试使用实例的公共 IP 地址从 EC2 实例外部调用此服务时,我看到以下错误:

curl: (7) Failed to connect to ec2.instance.ip.address port 8080: Connection refused
Run Code Online (Sandbox Code Playgroud)

我确认我已打开8080附加到此 EC2 实例的安全组的入口端口。我缺少什么?

Dar*_*der 6

我想到了。如果函数中没有传递host带值的参数,则应用程序外部不可见。执行以下操作解决了我的问题:0.0.0.0app.run()

if __name__ == '__main__':
    app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)