Подключиться к экземпляру базы данных AWS RDS MySQL с помощью Flask-SQLAlchemy

В моем приложении Flask я хочу использовать расширение Flask-SQLAlchemy для подключения к экземпляру базы данных, созданному мной на AWS RDS.

Когда я пытаюсь подключиться, приложение истекает, и я получаю следующую ошибку:

sqlalchemy.exc.OperationalError: (OperationalError) (2003, "Can not подключиться к серверу MySQL на 'Xxxxxxxxxxxxxxx.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com' (60" )

Мой код выглядит следующим образом:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
application = Flask(__name__)

application.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://{master username}:{db password}@{endpoint}/{db instance name}'
db = SQLAlchemy(application)

@application.route('/')
def hello_world():
    return 'Hello World'

if __name__ == '__main__':
    application.run()

Документация Flask-SQLAlchemy говорит, что формат SQLALCHEMY_DATABASE_URI для соединений с базой данных mysql должен выглядеть следующим образом:

mysql://username:[email protected]/db

Кроме того, я могу проверить консоль AWS RDS для информации о моем экземпляре базы данных. Консоль выглядит как this.

Сейчас я предполагаю, что "username" в SQLAlchemy относится к "Мастер-имени" в консоли AWS RDS, "сервер" в SQLAlchemy относится к "конечной точке" в консоли AWS RDS, и "db" относится к "имени экземпляра базы данных"

Что я делаю неправильно?

Если кто-то может описать SQLALCHEMY_DATABASE_URI для меня с терминами AWS RDS, это полностью решит проблему.

Ответы

Ответ 1

Перейдите на консоль AWS RDS и выберите свой экземпляр → Группы безопасности БД → Щелкните по умолчанию

и добавьте новый CIDR в соответствии с рекомендуемым диапазоном IP.

Это в основном конфигурация брандмауэра, которая определяет, кто может подключиться к экземпляру базы данных.

Вы можете установить его как 0.0.0.0/0, чтобы брандмауэр не мешал вам получать доступ к нему из любого хоста/сети.

Ответ 2

Это правильный путь: панель мониторинга EC2 → Найти сеть и безопасность с левой боковой панели → Группы безопасности.

Security groups

Если у вас создана группа безопасности, вы можете перейти на номер 2.

  1. Создание новой группы безопасности:

Там вы можете назвать свою группу безопасности и описание.

VPC, вероятно, будет создан автоматически для вас.

Create security group window

После создания выберите его из списка.

  1. Настройте входящие и/или исходящие подключения:

Здесь вы можете настроить правила входящих подключений.

Inbound window

При редактировании → добавить правило у вас есть стандартные настройки для простой настройки, например, HTTP для порта 80.

Edit inbound connection rules window

Я надеюсь, что это помогает всем отныне.

  • По соображениям безопасности попробуйте разрешить только доверенные IP-адреса и/или группы безопасности.