2013-02-13 4 views
16

Pour mon application Flask, je souhaite utiliser l'extension Flask-SQLAlchemy pour me connecter à une instance de base de données que j'ai créée sur AWS RDS.Connexion à l'instance de base de données AWS RDS MySQL avec Flask-SQLAlchemy

Quand je tente de me connecter, les temps d'application dehors et je reçois l'erreur suivante:

sqlalchemy.exc.OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on 'xxxxxxxxxxxxxxx.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com'(60")

Mon code ressemble à ceci:

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() 

Le Flask-SQLAlchemy documentation dit que le format de la SQLALCHEMY_DATABASE_URI pour les connexions de base de données mysql devrait ressembler à ceci:

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

En outre, je peux vérifier la console AWS RDS pour plus d'informations sur mon instance de base de données. La console ressemble à this.

En ce moment, je suppose que « nom d'utilisateur » dans SQLAlchemy fait référence au « Maître Nom d'utilisateur » dans la console AWS RDS, « serveur » dans SQLAlchemy fait référence au « point limite » dans la console AWS RDS, et " db "fait référence au" nom d'instance de base de données "

Qu'est-ce que je fais de mal ??

Si quelqu'un pouvait décrire le SQLALCHEMY_DATABASE_URI avec les termes de la console AWS RDS, cela résoudrait complètement le problème.

Répondre

19

Accédez à votre console AWS RDS et choisissez votre instance -> DB Groupes de sécurité -> Cliquez sur Par défaut

et ajouter une nouvelle CIDR selon la plage IP recommandée.

Il s'agit essentiellement d'une configuration de pare-feu qui détermine qui peut se connecter à l'instance de base de données.

Vous pouvez le définir comme 0.0.0.0/0 afin que le pare-feu ne vous empêche pas d'y accéder depuis n'importe quel hôte/réseau.

+0

Cette réponse n'est pas très valide maintenant puisque l'interface dans AWS a changé :( – sbose

0

Ceci est un chemin valide: Tableau de bord EC2 -> Trouver réseau & sécurité à partir du panneau latéral gauche -> Groupes de sécurité.

Security groups

Si vous avez un groupe de sécurité créé, vous pouvez vous rendre au numéro 2.

  1. Création d'un nouveau groupe de sécurité:

Il vous pouvez nommer votre groupe de sécurité et la description.

VPC sera probablement créé automatiquement pour vous.

Create security group window

Après avoir créé, sélectionnez dans la liste.

  1. Configurer les connexions entrantes et/ou sortantes:

Ici, vous pouvez configurer des règles de connexions entrantes.

Inbound window

Edit -> ajouter la règle que vous avez prédéfinis par défaut pour la configuration facile, par exemple HTTP sur le port 80.

Edit inbound connection rules window

J'espère que cela aide tout le monde à partir de maintenant.

Questions connexes