Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie stelle ich von einer Amazon ECS-Aufgabe auf Fargate aus eine Verbindung zu einer Datenbank her?
Ich möchte von einer Amazon Elastic Container Service (Amazon ECS)-Aufgabe auf AWS Fargate aus eine Verbindung zu einer Datenbank herstellen.
Lösung
Voraussetzungen:
- Sie benötigen einen Amazon ECS-Cluster, der auf Fargate läuft
- Sie müssen über eine Amazon Relational Database Service (Amazon RDS) -Datenbank verfügen. Amazon ECS und Amazon RDS haben möglicherweise Kommunikationsprobleme. Weitere Informationen finden Sie unter Wie behebe ich Verbindungsprobleme zwischen meinen Amazon-ECS-Aufgaben für einen Amazon-EC2-Starttyp und einer Amazon-RDS-Datenbank?.
Hinweis: Das folgende Beispiel verwendet MySQL als Engine-Typ. Weitere Informationen zu Engine-Typen finden Sie unter Erste Schritte mit Amazon RDS.
Verbinden Sie Ihre Aufgabe mit Ihrer Datenbank
Führen Sie die folgenden Schritte aus:
- Erstellen Sie ein Python-Skript, das eine Verbindung zu Ihrer MySQL-Datenbank herstellt. Das folgende Beispielskript rds.py sendet die Ergebnisse der Verbindung zur Datenbank an Amazon CloudWatch:
Hinweis: Ersetzen Sie ENDPOINT, USER und PASS durch Ihre Datenbankwerte.import pymysqlimport os Database_endpoint = os.environ['ENDPOINT'] Username = os.environ['USER'] Password = os.environ['PASS'] try: print("Connecting to " + Database_endpoint) db = pymysql.connect(host = Database_endpoint, user = Username, password = Password) print("Connection successful to " + Database_endpoint) db.close() except Exception as e: print("Connection unsuccessful due to " + str(e))
- Um ein Image zusammenzustellen, erstellen Sie ein Dockerfile, das die erforderlichen Befehle enthält. Zum Beispiel:
Wichtig: Legen Sie das Skript rds.py und Dockerfile in den gleichen Ordner.FROM pythonRUN pip install pymysql cryptography COPY rds.py / CMD [ "python", "/rds.py" ]
- Erstellen Sie ein Amazon ECR-Repository und übertragen Sie dann das Docker-Image in dieses Repository.
- Erstellen Sie eine Aufgabendefinition und fügen Sie dann das Docker-Image als Container-Image hinzu. Zum Beispiel:
Hinweis: Legen Sie in Ihrer Aufgabendefinition die Werte für die Umgebungsvariablen ENDPOINT, USER und PASS fest. Sie können diese Werte direkt als Umgebungsvariablen übergeben oder die Werte aus Secrets in AWS Secrets Manager abrufen. Weitere Informationen finden Sie unter Wie kann ich in einer Amazon ECS-Aufgabe geheime oder vertrauliche Informationen sicher an Container weitergeben?{ "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-app", "image": "YOUR-ECR-Repository-URL", "essential": true } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "sample-app" }
- Öffnen Sie die Amazon-ECS-Konsole.
- Wählen Sie im Navigationsbereich Aufgabendefinitionen aus.
- Wählen Sie Ihre Aufgabendefinition aus, wählen Sie Aktionen und dann Aufgabe ausführen aus.
- Wählen Sie als Starttyp FARGATE aus.
- Wählen Sie für Cluster den Cluster für Ihre Aufgabendefinition aus.
- Geben Sie unter Anzahl der Aufgaben die Anzahl der Aufgaben ein, die Sie kopieren möchten.
- Wählen Sie im Abschnitt VPC und Sicherheitsgruppen für Cluster-VPC Ihre Amazon Virtual Private Cloud (Amazon VPC) aus.
- Wählen Sie für Subnetze Ihre Subnetze aus.
- Wählen Sie für Sicherheitsgruppen mindestens eine Sicherheitsgruppe aus.
- Wählen Sie Aufgabe ausführen.
Das Skript rds.py stoppt die Aufgabe und gibt die folgende Meldung zurück:
„Der wichtige Container in der Aufgabe wurde beendet.“
Bestätigen Sie, dass Ihre Aufgabe mit Ihrer Datenbank verbunden ist
Führen Sie die folgenden Schritte aus:
- Öffnen Sie die Amazon-ECS-Konsole.
- Wählen Sie im Navigationsbereich Cluster und dann Ihren Cluster aus.
- Wählen Sie die Registerkarte Aufgaben aus.
- Wählen Sie unter Gewünschter Aufgabenstatus die Option Gestoppt aus, um eine Liste der gestoppten Aufgaben anzuzeigen.
- Wählen Sie Ihre gestoppte Aufgabe aus.
- Erweitern Sie auf der Registerkarte Details Ihrer gestoppten Aufgabe im Abschnitt Container den Abschnitt.
- Wählen Sie Protokolle in CloudWatch anzeigen.
In der CloudWatch-Konsole wird die folgende Meldung angezeigt:
"Connection successful to [Your Endpoint]"

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 7 Monaten