【问题标题】:AWS cloud9 timeout when running flask application运行烧瓶应用程序时AWS cloud9超时
【发布时间】:2018-05-30 16:50:30
【问题描述】:

大家好,我正在尝试使用烧瓶设置 AWS cloud9 环境来开发 Web 应用程序。我是 AWS/flask 的新手,遇到了一个问题。 IDE 环境和在我的浏览器中预览应用程序之间似乎存在问题(我使用的是 chrome,但也在 IE 中尝试过)。

来自 app.py:

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World'


app.run(host=os.getenv('IP', '0.0.0.0'), port=int(os.getenv('PORT', 8080)))

if __name__ == '__main__':
    app.run()
    app.debug(True)

当我在终端中运行它时(以 root 身份):

[root@ip-172-31-11-201 environment]# python ./app.py
Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)

当我右键单击http://0.0.0.0:8080/ 时,它将打开一个 yab 并将我重定向到公共 IP x.x.x.x:8080 并最终超时并给我:

err_connection_timeout

当我尝试使用 IDE 运行选项运行应用程序时,我会:

Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)

此时它也会超时。所以这让我很困惑,当我在 cloud9 IDE 之外运行它时,我没有这个问题。我知道在文档中你应该指向 8080 端口上的 0.0.0.0。所以我不太确定为什么用 run 运行它会改变我指定的 IP。

我也尝试过手动输入我的项目和用户名:

https://projectname-c9-username.c9.io/

此时它会将我重定向到一个页面,并告诉我“找不到我的用户名”。然后我尝试设置一个完成的cloud9.io帐户,我确认了我的帐户但无法登录并且仍然有“找不到用户名”页面。

之后,我用 sublime 将 0.0.0.0 替换为 127.0.0.1 在本地测试了来自 cloud9 的 app.py 文件,它在本地工作。

我的配置中是否缺少任何内容?自 AWS 收购 cloud9 以来,设置有什么变化吗?我一直在关注在线教程和视频,但无法解决这个问题。

从 IDE 环境:

# python --version
Python 2.7.12

# pip freeze flask
astroid==1.5.3
aws-cfn-bootstrap==1.4
awscli==1.11.132
Babel==0.9.4
backports.functools-lru-cache==1.4
backports.ssl-match-hostname==3.4.0.2
boto==2.42.0
botocore==1.5.95
chardet==2.0.1
click==6.7
cloud-init==0.7.6
CodeIntel==0.9.3
colorama==0.2.5
configobj==4.7.2
configparser==3.5.0
docutils==0.11
ecdsa==0.11
enum34==1.1.6
Flask==0.12.2
futures==3.0.3
gyp==0.1
ikpdb==1.1.2
Inflector==2.0.11
iniparse==0.3.1
isort==4.2.15
itsdangerous==0.24
jedi==0.11.0
Jinja2==2.7.2
jmespath==0.9.2
jsonpatch==1.2
jsonpointer==1.0
kitchen==1.1.1
lazy-object-proxy==1.3.1
lockfile==0.8
MarkupSafe==0.11
mccabe==0.6.1
paramiko==1.15.1
parso==0.1.0
PIL==1.1.6
ply==3.4
pyasn1==0.1.7
pycrypto==2.6.1
pycurl==7.19.0
pygpgme==0.3
pyliblzma==0.5.3
pylint==1.7.4
pylint-django==0.7.2
pylint-flask==0.5
pylint-plugin-utils==0.2.6
pystache==0.5.3
python-daemon==1.5.2
python-dateutil==2.1
pyxattr==0.5.0
PyYAML==3.10
requests==1.2.3
rsa==3.4.1
simplejson==3.6.5
singledispatch==3.4.0.3
six==1.11.0
subprocess32==3.2.7
urlgrabber==3.10
urllib3==1.8.2
virtualenv==15.1.0
Werkzeug==0.13
wrapt==1.10.11
yum-metadata-parser==1.1.4
zope.cachedescriptors==4.3.0 

感谢您的帮助!

【问题讨论】:

  • 可能是您没有使用 HTTPS。请参阅 AWS 文档。 To help improve code safety, in the address box of the application preview tab in the IDE, AWS Cloud9 always uses https. This behavior cannot be changed. docs.aws.amazon.com/cloud9/latest/user-guide/…

标签: python flask amazon-ec2 cloud9-ide aws-cloud9


【解决方案1】:

我通过搜索 EC2 问题弄清楚了:

您必须通过 AWS 防火墙/安全设置。 你必须:

  1. 进入 EC2(从所有 AWS 服务列表中)
  2. 点击安全组
  3. 点击您的 Cloud9 实例
  4. 点击入站
  5. 点击编辑
  6. 点击添加规则
  7. 添加这条规则:

    • 对于类型,选择自定义 TCP 规则。 - 所有流量也有效。
    • 对于端口范围,输入 8080、8081 或 8082。 - 如果您选择“所有流量”,则默认为所有端口。
    • 对于 Source,选择 Anywhere,看起来像 0.0.0.0/0

    这是一个屏幕截图链接:https://imgur.com/a/zhQbA

AWS 确实在其 C9 文档中隐藏了这一点。 https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html#app-preview-share-security-group 在通过 Internet 共享正在运行的应用程序中,第 2 步:为实例设置安全组

【讨论】:

  • 这真的很有帮助,它让我更接近,但我仍然收到超时错误。有什么建议吗?
【解决方案2】:

对我来说,我没有正确运行/预览应用程序。我试图在终端中使用绿色运行按钮或flask run

这对我有用。

运行应用程序

要运行应用程序,请转到终端并键入 python [NAMEOFPYTHONFILE] 所以 python app.py

预览应用

要查看应用程序,请转到 C9 工具栏中的“预览”,然后单击“预览正在运行的应用程序”。 您将被定向到一个疯狂的网址。 我的是https://a823459f29b04402a3793bec16fbXXXX.vfs.cloud9.us-east-1.amazonaws.com/(稍作修改)

我的代码 (app.py)

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Let's double check"

if __name__ == '__main__':
    app.debug = True
    app.run(host=os.environ['IP'], port=os.environ['PORT']) 

当前AWS C9 os环境变量如下

  • os.environ['IP'] 是 127.0.0.1
  • os.environ['PORT'] 是 8080

硬编码端口/主机也适用于 localhost 和 127.0.0.01

  • app.run(host='localhost', port='8080')
  • app.run(host='127.0.0.1', port='8080')

我不必像 hlidwin 提到的那样更改安全设置。

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 2020-04-16
    • 1970-01-01
    • 2018-12-13
    • 2021-06-10
    • 2018-09-27
    • 2015-07-05
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多