Настройка туннельного соединения SSH на Flask - PullRequest
0 голосов
/ 01 октября 2019

Я настраиваю бэкэнд колбы с помощью sshtunnel и sqlalchemy. Моя база данных (MySQL) имеет туннельное соединение через экземпляр EC2 в AWS.

У меня ошибка тайм-аута, возможно, из-за неправильной установки параметров.

from app.api import app
from flask_sqlalchemy import SQLAlchemy
import sshtunnel
import sqlalchemy
from io import StringIO

def getSessionServer():
#"""
   user='db_root_user'
   ssh_user = 'ssh_user'
   passwssh = "passwdssh"
   passw= 'db_root_passwd'
   dbName = 'db_name'
   localhost = 'database_endpoint'
   port = 3306
   host = 'ec2_public_ip'
   tunnel = sshtunnel.SSHTunnelForwarder(
           (host,22),
           ssh_password = passwssh,
           ssh_username=ssh_user,
           remote_bind_address=(localhost, port)
   )
   tunnel.start()
   app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(
        user,
        passw,
        localhost,
        tunnel.local_bind_port,
        dbName)

db = SQLAlchemy(app)

return db

У меня ошибка тайм-аута при вызове одного запроса.

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'database_endpoit' (timed out)")

(фон этой ошибки: http://sqlalche.me/e/e3q8)

...