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:
- Du musst über einen Amazon-ECS-Cluster verfügen, der auf Fargate ausgeführt wird.
- Du musst über eine Amazon Relational Database Service (Amazon RDS)-Datenbank verfügen. Amazon ECS und Amazon RDS haben möglicherweise Kommunikationsprobleme. Weitere Informationen findest du unter Wie behebe ich Verbindungsprobleme zwischen meinen Amazon-ECS-Aufgaben für einen Amazon-EC2-Starttyp und einer Amazon-RDS-Datenbank?.
Hinweis: Die folgende Lösung verwendet eine MySQL-Datenbank-Engine. Weitere Informationen zum Herstellen einer Verbindung mit Datenbanken, die andere Engine-Typen verwenden, findest du unter Erste Schritte mit Amazon RDS.
Aufgabe mit deiner Datenbank verbinden
Führe die folgenden Schritte aus:
-
Erstelle ein Python-Skript, das eine Verbindung zu deiner MySQL-Datenbank herstellt. Das folgende Beispielskript rds.py sendet die Ergebnisse der Verbindung zur Datenbank an Amazon CloudWatch:
import pymysql import os DATABASE_ENDPOINT = os.environ['example_endpoint'] USERNAME = os.environ['example_username'] PASSWORD = os.environ['example_password'] 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))Hinweis: Ersetze example_endpoint durch deinen Datenbankendpunkt. Ersetze example_username durch deinen Benutzernamen. Ersetze example_password durch dein Passwort.
-
Um ein Image zusammenzustellen, erstelle ein Dockerfile, das die erforderlichen Befehle enthält. Die folgende Beispieldatei enthält die erforderlichen Befehle:
FROM python RUN pip install pymysql cryptography COPY rds.py / CMD [ "python", "/rds.py" ] -
Erstelle ein Amazon Elastic Container Registry (Amazon ECR)-Repository und übertrage dann dein Docker-Image per Push in dieses Repository.
-
Erstelle eine Aufgabendefinition und füge dann dein Docker-Image als Container-Image hinzu:
{ "executionRoleArn": "arn:aws:iam::example_account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "example_app", "image": "example_repository_URL", "essential": true } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "example_app" }Hinweis: Ersetze example_account_ID durch deine AWS-Konto-ID. Ersetze example_app durch den Namen deiner Anwendung. Ersetze example_repository_URL durch die URL deines Amazon-ECR-Repository. Es hat sich bewährt, die Werte für die Umgebungsvariablen ENDPOINT, USER und PASS in deiner Aufgabendefinition festzulegen. Du kannst diese Werte direkt als Umgebungsvariablen übergeben oder die Werte aus Secrets in AWS Secrets Manager abrufen. Weitere Informationen findest du unter Wie kann ich in einer Amazon ECS-Aufgabe geheime oder vertrauliche Informationen sicher an Container weitergeben?
-
Öffne die Amazon-ECS-Konsole.
-
Wähle im Navigationsbereich Aufgabendefinitionen aus.
-
Wähle deine Aufgabendefinition aus, wähle Aktionen und dann Aufgabe ausführen aus.
-
Wähle als Starttyp die Option FARGATE aus.
-
Wähle für Cluster den Cluster für deine Aufgabendefinition aus.
-
Gib unter Anzahl der Aufgaben die Anzahl der Aufgaben ein, die du ausführen möchtest.
-
Wähle im Abschnitt VPC und Sicherheitsgruppen für Cluster-VPC deine Amazon Virtual Private Cloud (Amazon VPC) aus.
-
Wähle für Subnetze deine Subnetze aus.
-
Wähle für Sicherheitsgruppen mindestens eine Sicherheitsgruppe aus.
-
Wähle Aufgabe ausführen aus.
Wenn deine Aufgabe mit deiner Datenbank verbunden ist, stoppt das Skript rds.py die Aufgabe und zeigt die folgende Meldung an:
„Essential container in task exited.“
Bestätigen, dass du deine Aufgabe mit deiner Datenbank verbunden hast
Führe die folgenden Schritte aus:
- Öffne die Amazon-ECS-Konsole.
- Wähle im Navigationsbereich Cluster und dann deinen Cluster aus.
- Wähle die Registerkarte Aufgaben aus.
- Wähle unter Gewünschter Aufgabenstatus die Option Gestoppt aus, um eine Liste der gestoppten Aufgaben anzuzeigen.
- Wähle deine gestoppte Aufgabe aus.
- Erweitere auf der Registerkarte Details deiner gestoppten Aufgabe den Abschnitt Container.
- Wähle Protokolle in CloudWatch anzeigen aus.
Wenn du deine Aufgabe erfolgreich mit deiner Datenbank verbunden hast, wird die folgende Meldung in der CloudWatch-Konsole angezeigt:
„Connection successful to [your endpoint]“
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 2 Jahren