PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django kann keine Verbindung zu RDS postgresql herstellen

Bearbeiten:

Ich bin das gerade noch einmal durchgegangen und habe einen einfacheren Weg.

Wenn Sie versuchen, eine vorhandene RDS-Datenbank mit Django auf EC2 oder EB zu verwenden, müssen Sie die Sicherheitsgruppen anpassen und dann die richtigen Parameter abrufen und sie als Umgebungsvariablen (RDS_*) festlegen

1) RDS erstellen und diese abgleichen:

Environment variables - RDS console label

RDS_HOSTNAME - Endpoint (this is the hostname)
RDS_PORT - Port
RDS_DB_NAME –  DB Name
RDS_USERNAME –  Username
RDS_PASSWORD – Password you set for your DB

2) Stellen Sie diese beispielsweise mit eb setenv ein

3) Gehen Sie zu Ihrer EC2/EB-Instanz und rufen Sie die Sicherheitsgruppe dafür ab, z. awseb-z-afsafdsaf-stack-AWSEBSecurityGroup-asfdsadfasdf

4) Gehen Sie zum Panel für Ihre RDS-Instanz, scrollen Sie nach unten zu Sicherheitsgruppen und notieren Sie sich, welche Sicherheitsgruppe sie hat. z.B. rds-launch-wizard-1 (ab-sdjfalkajsdf39)

5) Wählen Sie die RDS-Sicherheitsgruppe aus und fügen Sie eine Eingangsregel mit dem Typ:PostgreSQL (oder welche Datenbank Sie auch verwenden) hinzu und verwenden Sie die EC2- oder EB-Instance, die Sie in Schritt 2 erhalten haben, als Quelle (awseb-z-afsafdsaf-stack-AWSEBSecurityGroup-asfdsadfasdf ). Protokoll und Portbereich sollten automatisch ausgefüllt werden.

6) Speichern

Das ist es.

Original:

Für alle, die über diese Frage stolpern:

Wenn Sie versuchen, eine vorhandene RDS-Datenbank mit Django auf EC2 oder EB zu verwenden, müssen Sie die Sicherheitsgruppen anpassen und dann die richtigen Parameter abrufen und sie als Umgebungsvariablen (RDS_*) festlegen

1) RDS erstellen und diese abgleichen:

Environment variables - RDS console label

RDS_HOSTNAME - Endpoint (this is the hostname)
RDS_PORT - Port
RDS_DB_NAME –  DB Name
RDS_USERNAME –  Username
RDS_PASSWORD – Password you set for your DB

2) Stellen Sie diese beispielsweise mit eb setenv ein

3) Gehen Sie zu Ihrer EC2/EB-Instanz und rufen Sie die Sicherheitsgruppe dafür ab, z. awseb-z-afsafdsaf-stack-AWSEBSecurityGroup-asfdsadfasdf und für den Load Balancer:awseb-e-adsfadsf-stack-AWSEBLoadBalancerSecurityGroup-asdfadsf

4) Gehen Sie zum Panel für Ihre RDS-Instanz, scrollen Sie nach unten zu Sicherheitsgruppen und notieren Sie sich, welche Sicherheitsgruppe sie hat. z.B. rds-launch-wizard-1 (ab-sdjfalkajsdf39)

5) Klicken Sie für die RDS-Instanz auf „Modifizieren“ und fügen Sie in der Einstellung „Sicherheitsgruppen“ in der Mitte die oben gefundene Load Balancer-Sicherheitsgruppe hinzu. Es sollte Vorschläge enthalten.

6) Gehen Sie zum EC2 Dashboard und wählen Sie Sicherheitsgruppen aus dem Menü auf der linken Seite.

7) Wählen Sie die Load Balancer-Sicherheitsgruppe aus und fügen Sie eine ausgehende Regel hinzu. Typ sollte Ihr RDS-Typ (PostgreSQL) sein und das Ziel sollte benutzerdefiniert und die Sicherheitsgruppe der RDS-Instanz sein. Speichern.

8) Machen Sie dasselbe für Inbound, verwenden Sie denselben RDS-Typ und dasselbe Ziel

9) Wählen Sie die RDS-Sicherheitsgruppe aus und fügen Sie eine Inbound-Regel hinzu, ähnlich wie 8, aber mit der EC2- oder EB-Instance, die Sie in Schritt 2 erhalten haben.

10) Speichern, fertig. Sie sollten jetzt zusammenarbeiten können.

Ich bin mir nicht 100% sicher, dass alle diese Schritte notwendig sind, ein oder zwei vielleicht nicht, aber das hat die Arbeit für mich erledigt.