Как получить доступ к приложению Python flask, работающему на AWS EC2, удаленно? - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть приложение flask, которое я клонировал на свой экземпляр aws ec2. Я могу запустить его только в виртуальной среде (которую я активирую, выполнив следующую команду):

$ python3 -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
$ pip install flask==1.1.1

Ниже мое приложение:

from flask import Flask
app = Flask(__name__)

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

if __name__ == "__main__":
    app.run() 

Оно прекрасно работает при выполнении env FLASK_APP=app.py flask run. Проблема в том, что я хотел бы получить доступ к открытым маршрутам, используя мой aws ec2 publi c IP или имя хоста. Я получаю сообщение об ошибке, когда пытаюсь получить к нему доступ. Я думаю, это потому, что я запускаю приложение flask в виртуальной среде, но я не уверен. Я не могу найти хорошие учебники о том, как это разоблачить. Куда я здесь не так?

1 Ответ

2 голосов
/ 11 февраля 2020

Быстрое и безопасное решение:

Поскольку вы используете сервер разработки, который не предназначен для производства. Я бы сказал, что лучший способ подключиться к этому приложению только с вашей собственной машины , это использовать туннель s sh:

ssh -L 5000:localhost:5000 ec2_addr

Затем вы можете указать свой веб-браузер на http://localhost:5000/ на вашем клиентском компьютере, который будет подключен к порту 5000 в экземпляре EC2. Это быстрый способ подключения к Flask (или любому) серверу на удаленной коробке Linux. Туннель разрушается, когда вы останавливаете этот сеанс s sh.

Более длинный метод:

Я хотел бы получить доступ к открытым маршрутам, используя мои aws ec2's publi c IP или имя хоста.

Тайм-аут не потому, что он работает в виртуальной среде: вы, вероятно, обнаружите, что вам нужно назначить группы безопасности для вашего экземпляра через консоль EC2. Это позволяет вам открывать определенные порты на общедоступном c IP.

См. Этот другой ответ, который я написал, относительно групп безопасности EC2 .

Однако осторожны . Вы не должны подвергать сервер разработки таким образом. Существует ряд обучающих программ, подобных этому от digital ocean , которые охватывают развертывание приложения flask за gunicorn и nginx с сертификатом Let's Encrypt SSL. Вы должны оказаться в положении, когда ваша группа безопасности выставляет порты 80 и 443, а запросы на порт 80 перенаправляются на URL-адрес https с помощью конфигурации nginx.

Если это звучит как целая куча хлопот / у вас нет Linux навыков / вы не хотите изучать Linux навыков, то это общие причины, по которым люди выбирают управляемые сервисы, такие как AWS Elasti c Beanstalk, на котором вы можете развернуть ваше приложение flask (официальное руководство) , не беспокоясь о конфигурации сервера. Heroku - это еще одна (не AWS) служба, которая предлагает такие функции.

Это действительно зависит от того, что вам требуется / wi sh для получения. Берегите себя!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...