Wie behebe ich Verbindungsprobleme zwischen meinen Amazon-ECS-Aufgaben für einen Amazon-EC2-Starttyp und einer Amazon-RDS-Datenbank?
Meine Anwendung wird als eine Reihe von Aufgaben ausgeführt, die von Amazon Elastic Container Service (Amazon ECS) auf Amazon Elastic Compute Cloud (Amazon EC2)-Instances gestartet wurden. Meine Anwendung kann nicht mit der Amazon Relational Database Service (Amazon RDS)-Datenbank kommunizieren.
Behebung
Überprüfen Sie Ihre Netzwerkkonfigurationen
Um zu überprüfen, ob eine Container-Instance eine Verbindung zur Datenbank herstellen kann, führen Sie die folgenden Schritte für Linux- oder Windows-basierte Container-Instances aus:
Für Linux-basierte Container-Instances:
- Erstellen Sie Schlüsselpaar-Anmeldeinformationen, um SSH für die Verbindung mit der Container-Instance zu verwenden, auf der sich Ihre Aufgabe befindet.
- Führen Sie den folgenden Befehl aus, um eine Verbindung zu Ihrer RDS-Datenbank herzustellen:
**Hinweis:**Ersetzen Sie test.ab12cde3fg4.us-east-1.rds.amazonaws.com durch Ihren Datenbankendpunkt. Ersetzen Sie 3306 durch Ihren Datenbankport.$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306
Die Ausgabe sieht etwa wie folgt aus:
Wichtig: Telnet ist auf Amazon-ECS-optimierten Amazon Machine Images (AMIs) nicht vorinstalliert. Führen Sie den Befehl sudo yum install telnet -y aus, um Telnet zu installieren.> Trying 172.31.122.28 > Connected to test.ab12cde3fg4.us-east-1.rds.amazonaws.com > Escape character is '^]'.
Für Windows-basierte Container-Instances:
Wichtig: Telnet ist auf Amazon-ECS-optimierten Windows-AMIs nicht vorinstalliert. Um Telnet zu installieren, führen Sie den Befehl Install-WindowsFeature -Name Telnet-Client mit PowerShell als Administrator aus.
- Verwenden Sie das Remote Desktop Protocol (RDP), um eine Verbindung zu der Container-Instance herzustellen, auf der Ihre Aufgabe platziert ist.
- Um eine Verbindung zu Ihrer RDS-Datenbank herzustellen, führen Sie den folgenden Befehl entweder über die Windows-Befehlszeile oder über Windows PowerShell aus:
**Hinweis:**Ersetzen Sie test.ab12cde3fg4.us-east-1.rds.amazonaws.com durch Ihren Datenbankendpunkt. Ersetzen Sie 3306 durch Ihren Datenbankport.$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306
Wenn die Verbindung hergestellt ist, erscheint eine leere Seite. Wenn die Verbindung nicht hergestellt wird und Sie die Fehler „Connection Timed Out“ oder „Connection failed“ erhalten, gehen Sie wie folgt vor:
- Prüfen Sie, ob die angehängten Sicherheitsgruppen den Zugriff auf die RDS-Datenbank zulassen. Sie können entweder den API-Aufruf DescribeInstances oder die Registerkarte Beschreibung für Ihre ausgewählte Instance-ID in der Amazon-EC2-Konsole verwenden.
Hinweis: Im Netzwerkmodus Bridge und Host regeln Sicherheitsgruppen, die an die Container-Instance angehängt sind, den Zugriff auf die Datenbank. Im Netzwerkmodus awsvpc regeln die Sicherheitsgruppen, die beim Start des Services oder der Aufgabe verknüpft sind, den Zugriff. Es ist eine bewährte Methode eine Sicherheitsgruppe zu erstellen, die eingehenden Datenverkehr vom Datenbankport zulässt. Hängen Sie dann die Sicherheitsgruppe an die Datenbank und die Container-Instance an oder verknüpfen Sie die Sicherheitsgruppe mit Aufgaben, die auf awsvpc basieren. - Prüfen Sie, ob die Netzwerkzugriffskontrollliste (Netzwerk-ACL) und die dem Subnetz zugeordnete Routing-Tabelle den Zugriff auf die Datenbank zulassen. Weitere Informationen finden Sie unter Warum kann ich keine Verbindung zu einem Service herstellen, wenn die Sicherheitsgruppe und die Netzwerk-ACL eingehenden Datenverkehr zulassen?
Überprüfen Sie die Datenbankverbindungsparameter
Gehen Sie wie folgt vor, um die Datenbankverbindungsparameter zu überprüfen:
- Übergeben Sie im Abschnitt Umgebung Ihrer Container-Definition Ihre Umgebungsvariablen auf eine sichere Weise. Um die Umgebungsvariablen auf eine sichere Weise zu übergeben, verweisen Sie im AWS Systems Manager Parameter Store oder AWS Secrets Manager auf Ihre Umgebungsvariablen. Weitere Informationen finden Sie unter Wie kann ich in einer Amazon ECS-Aufgabe geheime oder vertrauliche Informationen sicher an Container weitergeben?
Hinweis: Eine Anwendung verwendet Parameter (wie Datenbankendpunkt, Datenbankport und Datenbankzugriffsanmeldeinformationen), um eine Verbindung mit der Datenbank herzustellen. Diese Parameter werden normalerweise als Umgebungsvariablen an die Aufgabe übergeben. - Wenn der Container Ihrer Aufgabe eine Verbindung mit der Datenbank herstellen kann, sich aber aufgrund falscher Verbindungsparameter nicht authentifizieren kann, setzen Sie Ihr Datenbankkennwort zurück.
- Entfernen Sie alle führenden oder abschließenden Zeichen aus Ihren Verbindungsparametern.
Hinweis: Syntaxfehler können dazu führen, dass die Verbindung zwischen Ihrem Container und der RDS-Datenbank fehlschlägt.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr