Direkt zum Inhalt

Wie behebe ich Verbindungsprobleme zwischen meiner Fargate-Aufgabe und anderen AWS-Services?

Lesedauer: 4 Minute
0

Ich möchte Probleme bei der Verbindung zwischen meiner AWS Fargate-Aufgabe und einem anderen AWS-Service beheben.

Kurzbeschreibung

Anwendungen, die innerhalb einer Fargate-Aufgabe mit Amazon Elastic Container Service (Amazon ECS) ausgeführt werden, können aus den folgenden Gründen nicht auf andere AWS-Services zugreifen:

  • Unzureichende Berechtigungen für AWS Identity and Access Management (IAM)
  • Falsche Subnetzrouten
  • Einschränkungen der Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL)
  • Falsche Sicherheitsgruppenregeln
  • Falsche Amazon Virtual Private Cloud (Amazon VPC)-Endpunktkonfigurationen

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.

ECS Exec einrichten und verwenden

Verwende ECS Exec, um mit dem Anwendungscontainer deiner Fargate-Aufgabe zu interagieren. Erfülle die Voraussetzungen für die Nutzung von ECS Exec. Schalte ECS Exec anschließend für deine Fargate-Aufgabe ein.

Wenn der Anwendungscontainer keine Shell-Sitzungen zum Ausführen von ECS Exec unterstützt, verwende ein aws-cli-Docker-Image, um eine neue Fargate-Aufgabe zu erstellen. Die neue Aufgabe muss sich im selben Subnetz und VPC befinden wie die aktuelle Fargate-Aufgabe.

Verbindungen zwischen Amazon ECS und anderen AWS Service-Endpunkten konfigurieren

Wenn die Amazon ECS-Aufgaben keine Verbindung zu anderen Services herstellen können, überprüfe, ob du die folgenden Bedingungen erfüllst:

  • Die Endpunkt-URL ist korrekt, einschließlich Protokoll (http:// oder https://), Hostname und Port. Konfiguriere deine VPC-Endpunkte mit Subnetzen, die mit deiner Amazon ECS-Service-Subnetzkonfiguration übereinstimmen.
  • Die Subnetze, die der Amazon ECS-Service verwendet, müssen über die richtigen DNS-Konfigurationen verfügen, um die Endpunkt-URLs aufzulösen, entweder über einen von Amazon bereitgestellten DNS oder einen benutzerdefinierten Resolver.
  • Die Sicherheitsgruppe, die an die Amazon ECS-Aufgaben angehängt ist, muss den ausgehenden Zugriff auf den Port und das Protokoll des Ziel-Services erlauben.
  • Netzwerk-Zugriffssteuerungslisten (ACLs) im Subnetz müssen den Verkehr zu und von den erforderlichen Service-Endpunkten zulassen.

Die Verbindung zwischen deiner Fargate-Aufgabe und dem Endpunkt des AWS-Services testen

Um die Verbindung der Fargate-Aufgabe mit dem Endpunkt und dem Port deines AWS-Services zu testen, führe den folgenden telnet-Befehl von deinem Container aus:

telnet endpoint-url port

Hinweis: Ersetze im vorangehenden Befehl endpoint-url durch die Endpunkt-URL für deinen Service und Port durch die Portnummer für den Service.

Wenn die Verbindung erfolgreich ist, erhältst du die folgende Beispielausgabe:

Trying 10.0.1.169...  
Connected to sns.us-east-1.amazonaws.com.  
Escape character is '^]'.

Um die DNS-Auflösung für deinen Endpunkt zu testen, führe den folgenden nslookup-Befehl aus:

nslookup example-endpoint

Beispielausgabe:

Name: sns.us-east-1.amazonaws.com  
Address: 10.0.1.169

Wenn du die Befehle telnet oder nslookup nicht in deinem Container installiert hast, führe einen der folgenden Befehle aus, um sie zu installieren.

Debian-basierte Container:

apt-get update
apt-get install -y dnsutils telnet

Amazon Linux-Container:

yum install -y bind-utils telnet

Verbindungs-Timeout-Fehler beheben

Wenn du Verbindungs-Timeout-Fehler erhältst, überprüfe deine Netzwerkkonfiguration.

Regeln für Sicherheitsgruppen

Wenn der Verkehr über einen VPC-Endpunkt geleitet wird, muss die Sicherheitsgruppe des Endpunkts TCP-Verkehr an Port 443 von einem der folgenden Punkte zulassen:

  • Die Sicherheitsgruppe der Amazon ECS-Aufgabe
  • Der VPC CIDR-Block

Konfiguriere die Sicherheitsgruppe der Aufgabe, um ausgehenden Datenverkehr zum VPC-Endpunkt des Services zuzulassen.

VPC-Routing

Für öffentliche Subnetze muss die Fargate-Aufgabe eine Standardroute von 0.0.0.0/0 haben, die auf das Internet-Gateway zeigt.

Für private Subnetze muss die Routing-Tabelle je nach Architektur entweder eine Route zu einem NAT-Gateway oder einem Transit-Gateway enthalten.

Proxy-Einstellungen

Wenn die Amazon ECS-Aufgabe einen Proxy-Server verwendet, vergewissere dich, dass die Proxy-Konfiguration den Datenverkehr zu deinem Service-Endpunkt zulässt.

VPC-Flow-Protokolle analysieren

Wenn du immer noch Verbindungsprobleme hast, verwende Amazon VPC-Flow-Protokolle, um die Details des Verkehrsflusses anzuzeigen.

Probleme mit IAM-Berechtigungen beheben

Überprüfe, ob die Amazon ECS-Aufgabenrolle dem Anwendungscontainer die Berechtigung zur Interaktion mit anderen AWS Services erteilt. 

Beispielsweise können folgende Fehler auftreten, wenn du versuchst, dich mit einem Amazon Simple Notification Service (Amazon SNS)-Endpunkt zu verbinden.

Beispiel für eine Fehlermeldung einer VPC-Endpunktrichtlinie:

„An error occurred (AuthorizationError) when calling the ListTopics operation: User: arn:aws:sts::123456789012:assumed-role/TaskRole/123456789012 is not authorized to perform: SNS:ListTopics on resource: arn:aws:sns:region-name:123456789012:* with an explicit deny in a VPC endpoint policy“

Um dieses Problem zu beheben, erteile dem Amazon VPC-Endpunkt die Berechtigung, die erforderlichen Aktionen für deine AWS-Services durchzuführen. In der vorangehenden Beispiel-Fehlermeldung muss der Amazon VPC-Endpunkt über die Berechtigung ListTopics verfügen.

Beispiel für eine Fehlermeldung über die Berechtigung der Aufgabenrolle:

„An error occurred (AuthorizationError) when calling the ListTopics operation: User: arn:aws:sts::123456789012:assumed-role/TaskRole/123456789012 is not authorized to perform: SNS:ListTopics on resource: arn:aws:sns:region-name:123456789012:* because no identity-based policy allows the SNS:ListTopics action“

Um dieses Problem zu beheben, gewähre der IAM-Rolle der Amazon ECS-Aufgabe die Berechtigung, die erforderlichen Aktionen für die Empfänger-Services durchzuführen. In der vorangehenden Beispiel-Fehlermeldung muss die IAM-Rolle über die Berechtigung ListTopics verfügen.

AWS OFFICIALAktualisiert vor einem Jahr