Wie behebe ich Probleme mit meiner Verbindung zwischen Amazon ECS und Amazon S3?
Ich möchte von meinen Amazon Elastic Container Service (Amazon ECS)-Aufgaben aus auf Amazon Simple Storage Service (Amazon S3) zugreifen, aber ich habe Probleme mit der Verbindung.
Lösung
CloudWatch-Protokolle analysieren, um die Ursache von Amazon S3-Zugriffsproblemen zu ermitteln
Richte zunächst den Zugriff auf CloudWatch Logs ein. Verwende dann CloudWatch Logs Insights, um die Ursache des Problems zu ermitteln.
CloudWatch Logs-Zugriff einrichten
Gehe wie folgt vor, um Amazon CloudWatch Logs für die Amazon ECS-Aufgabendefinition zu konfigurieren:
- Öffne die Amazon-ECS-Konsole.
- Wähle im Navigationsbereich Aufgabendefinitionen.
- Wähle die Aufgabendefinition aus und füge dann den folgenden Code zur Aufgabendefinition hinzu:
Hinweis: Ersetze my-container durch den Container-Instance-Namen, my-image:latest durch den Image-Namen und -Tag und region-code durch die AWS-Region.{ "containerDefinitions": [ { "name": "my-container", "image": "my-image:latest", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/my-task", "awslogs-region": "region-code", "awslogs-stream-prefix": "ecs" } } } ] } - Aktualisiere den Amazon ECS-Service, um die neueste Version der Aufgabendefinition zu verwenden.
CloudWatch Logs-Insights verwenden, um die Ursache des Problems zu ermitteln
Führe die folgende Abfrage aus, um nach allgemeinen Amazon S3-Fehlern zu suchen:
filter @message like /S3|AccessDenied|NoSuchBucket/
Führe die folgende Abfrage aus, um nach bestimmten Problemen mit dem Bucket-Zugriff zu suchen:
filter @message like /my-bucket-name/
Hinweis: Ersetze den my-bucket-name durch den Bucket-Namen.
Verwende diese Informationen, um festzustellen, ob das Problem mit AWS Identity and Access Management (IAM)-Berechtigungen, Netzwerkkonnektivität, Bucket-Konfiguration oder Anwendungsproblemen zusammenhängt. Führe dann die entsprechenden Schritte zur Fehlerbehebung durch.
Die IAM-Rollenkonfiguration überprüfen
Stelle sicher, dass die Aufgabenrolle für die Amazon ECS-Aufgabe über die erforderlichen Amazon S3-Berechtigungen verfügt, z. B. die AmazonS3ReadOnlyAccess-Richtlinie für schreibgeschützte Vorgänge. Überprüfe die AWS CloudTrail-Protokolle, um abgelehnte Aktionen im Zusammenhang mit Amazon S3 zu identifizieren. Wenn die Amazon ECS-Aufgabe beispielsweise Objekte aus dem Bucket my-app-data lesen muss, füge der Aufgabe die folgende benutzerdefinierte Richtlinie hinzu:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-app-data", "arn:aws:s3:::my-app-data/*" ] } ] }
Hinweis: Die vorstehende Richtlinie ermöglicht es der Aufgabe, den Inhalt des Buckets my-app-data aufzulisten und Objekte aus demselben abzurufen.
Netzwerkkonfiguration prüfen
Aufgaben in öffentlichen Subnetzen
Für Aufgaben in öffentlichen Subnetzen überprüfe die Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL) der Virtual Private Cloud (VPC), in der sich die Instance befindet. Die Netzwerk-ACL muss ausgehenden Datenverkehr auf Port 443 zulassen. Stelle außerdem sicher, dass die Sicherheitsgruppen, die der Aufgabe zugeordnet sind, ausgehenden HTTPS-Datenverkehr auf Port 443 zu den von Amazon S3 AWS verwalteten Präfixlisten zulassen.
Aufgaben in privaten Subnetzen
Stelle bei Aufgaben in privaten Subnetzen sicher, dass ein NAT-Gateway mit der Routing-Tabelle des Subnetzes verknüpft ist. Das NAT-Gateway stellt einen Internetpfad bereit, um den Amazon S3-Endpunkt zu erreichen. Wenn du einen VPC-Endpunkt für Amazon S3 verwendest, überprüfe die Routing-Tabelle, die der VPC zugeordnet ist, für den Amazon S3-Gateway-Endpunkt. Stelle sicher, dass die Routing-Tabelle eine Route für die von Amazon S3 AWS verwaltete Präfixliste enthält, die den Datenverkehr zum Amazon S3-Gateway-Endpunkt leitet. Diese Route stellt sicher, dass Anfragen an Amazon S3 nicht über das öffentliche Internet gesendet werden.
Wenn du einen Amazon S3-Schnittstellenendpunkt verwendest, stelle sicher, dass die Sicherheitsgruppen, die an den Endpunkt angehängt sind, eingehenden HTTPS-Datenverkehr auf Port 443 zulassen. Stelle außerdem sicher, dass die private DNS-Einstellung des Endpunkts und die DNS-Einstellungen DNS-Hostnamen aktivieren und DNS-Support aktivieren der VPC aktiviert sind. Stelle abschließend sicher, dass die Anwendung den Endpunkt s3.region.amazonaws.com verwendet, nicht den globalen Endpunkt s3.amazonaws.com.
Die Netzwerkkonnektivität von Amazon ECS-Aufgaben zu Amazon S3-Endpunkten testen
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 der AWS CLI verwendest.
Stelle sicher, dass die Netzwerkkonfiguration, einschließlich Firewalls und Sicherheitsgruppen, den Datenverkehr zu den Amazon S3-Endpunkten zulässt.
Hinweis: Du kannst ECS Exec verwenden, um die folgenden Befehle auszuführen.
Um die HTTPS-Verbindung zum Amazon S3-Endpunkt auf Port 443 zu testen, führe den folgenden telnet- oder curl-Befehl aus:
telnet s3.region-code.amazonaws.com 443
curl -v https://s3.region-code.amazonaws.com
Hinweis: Ersetze region-code durch deine Region. Möglicherweise musst du den telnet-Befehl installieren.
Um zu testen, ob die Container-Instance Amazon S3-Vorgänge authentifizieren und ausführen kann, führen den AWS CLI-Befehl ls aus:
aws s3 ls
Wenn der vorherige Test fehlschlägt, überprüfe die Sicherheitsgruppen, Netzwerk-ACLs und Firewall-Regeln, um nach blockierten Ports zu suchen.
Ähnliche Informationen
Wie behebe ich Fehler „403 Access Denied“ von Amazon S3?
Wie kann ich von meinen Amazon ECS-Aufgaben aus auf andere AWS-Services auf Fargate zugreifen?
Wie behebe ich einen Verbindungsfehler beim Ausführen der Befehle "cp" oder in meinem Amazon S3 Bucket?"sync"
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 10 Monaten