Wie kann ich von einer Amazon ECS-Aufgabe auf Fargate aus eine Verbindung zu einer Datenbank herstellen?

Lesedauer: 3 Minute
0

Ich möchte von einer Amazon Elastic Container Service (Amazon ECS)-Aufgabe auf AWS Fargate aus eine Verbindung zu einer Datenbank herstellen.

Behebung

Bevor Sie die folgenden Schritte ausführen, stellen Sie sicher, dass Sie einen Amazon ECS-Cluster auf Fargate und eine Amazon Relational Database Service (Amazon RDS)-Datenbank haben. 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: Die folgende Auflösung verwendet MySQL als Engine-Typ.

Verbinden Sie Ihre Aufgabe mit Ihrer Datenbank

1.Erstellen Sie ein Python-Skript, das eine Verbindung zu Ihrer MySQL-Datenbank herstellt.

Das folgende Beispielskript rds.py gibt das Ergebnis der Verbindung zur Datenbank zu Amazon CloudWatch aus:

import pymysql
import 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))

**Hinweis:**Ersetzen Sie ENDPOINT, USER und PASS durch Ihre Datenbankwerte.

2.Erstellen Sie eine Dockerdatei, die die erforderlichen Befehle zum Zusammenstellen eines Images enthält. Zum Beispiel:

FROM python
RUN pip install pymysql cryptography
COPY rds.py /
CMD [ "python", "/rds.py" ]

**Wichtig:**Stellen Sie sicher, dass Sie Ihr Skript rds.py und Ihre Dockerdatei im selben Ordner ablegen.

3.Erstellen Sie ein Amazon ECR-Repository und übertragen Sie dann das Docker-Image in dieses Repository.

4.Erstellen Sie eine Aufgabendefinition und fügen Sie dann das Docker-Image aus Schritt 2 als Container-Image hinzu. Zum Beispiel:

{
  "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"
}

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 sie 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?

5.Öffnen Sie die Amazon ECS-Konsole und wählen Sie im Navigationsbereich die Option Aufgabendefinitionen aus.

6.Wählen Sie Ihre Aufgabendefinition aus, wählen Sie Aktionen und dann Aufgabe ausführen.

7.Wählen Sie als Starttyp FARGATE aus.

8.Wählen Sie für Cluster den Cluster für Ihre Aufgabendefinition aus.

9.Geben Sie unter Anzahl der Aufgaben die Anzahl der Aufgaben ein, die Sie kopieren möchten.

10.Wählen Sie im Abschnitt VPC und Sicherheitsgruppen für Cluster-VPC Ihre Amazon Virtual Private Cloud (Amazon VPC) aus.

11.Wählen Sie für Subnetze Ihre Subnetze aus.

12.Wählen Sie für Sicherheitsgruppen mindestens eine Sicherheitsgruppe aus.

13.Wählen Sie Aufgabe ausführen.

Das Skript rds.py stoppt die Aufgabe und gibt die folgende Meldung zurück:

Essential container in task exited.

Bestätigen Sie, dass Ihre Aufgabe mit Ihrer Datenbank verbunden ist

1.Öffnen Sie die Amazon-ECS-Konsole.

2.Wählen Sie im Navigationsmenü die Option Cluster und dann Ihren Cluster aus.

3.Wählen Sie die Registerkarte Aufgaben aus.

4.Wählen Sie unter Gewünschter Aufgabenstatus die Option Gestoppt aus, um eine Liste der gestoppten Aufgaben anzuzeigen.

5.Wählen Sie Ihre gestoppte Aufgabe aus.

6.Wählen Sie auf der Registerkarte Details Ihrer gestoppten Aufgabe im Abschnitt Container das Expander-Symbol aus.

7.Wählen Sie Protokolle in CloudWatch anzeigen.

In der Amazon CloudWatch-Konsole sollte die folgende Meldung angezeigt werden:

Connection successful to [Your Endpoint]
AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr