Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Amazon S3-Fehlerbehebung

Dieser Abschnitt beschreibt die Fehlerbehebung in Amazon S3 und erklärt, wie Sie Anfrage-IDs erhalten, die Sie brauchen, wenn Sie Kontakt mit dem AWS-Support aufnehmen.

Amazon S3-Fehlerbehebung nach Symptomen

Die folgenden Themen listen die Symptome auf, die Ihnen dabei helfen, einige der Probleme zu beheben, die bei der Arbeit mit Amazon S3 auftreten können.

Deutliche Zunahme von HTTP 503-Antworten auf Amazon S3-Anfragen an Buckets mit aktiviertem Versioning

Wenn Sie eine deutliche Zunahme von HTTP 503-Verlangsamungsantworten feststellen, die für Amazon S3 PUT- oder DELETE-Objektanfragen an einen Bucket mit aktiviertem Versioning eingehen, befindet sich möglicherweise ein oder mehrere Objekte im Bucket, für die Millionen von Versionen vorhanden sind. Wenn Sie Objekte mit Millionen Versionen haben, drosselt Amazon S3 automatisch Anfragen an den Bucket, um den Kunden vor übermäßigem Anfragedatenverkehr zu schützen, wodurch potenziell andere Anfragen an denselben Bucket beeinträchtigt werden können.

Um festzustellen, welche S3-Objekte Millionen Versionen haben, verwenden Sie das Amazon S3-Bestandswerkzeug. Das Bestandswerkzeug generiert einen Bericht, der eine flache Dateiliste der Objekte in einem Bucket enthält. Weitere Informationen finden Sie unter Amazon S3-Bestand.

Das Amazon S3-Team bittet die Kunden, Anwendungen zu überprüfen, die wiederholt dasselbe S3-Objekt überschreiben und damit potenziell Millionen Versionen für dieses Objekt erstellen, um festzustellen, ob die Anwendung wie beabsichtigt funktioniert. Wenn Sie einen Anwendungsfall haben, in dem Millionen von Versionen für ein oder mehrere S3-Objekte benötigt werden, wenden Sie sich an das AWS-Supportteam unter AWS Support, um Ihren Anwendungsfall zu besprechen und uns zu ermöglichen, die optimale Lösung für Ihr Szenario für Sie zu finden.

Unerwartetes Verhalten beim Zugriff auf Buckets, die mit CORS eingerichtet wurden

Wenn Sie ein unerwartetes Verhalten feststellen, wenn Sie auf Buckets zugreifen, die mit CORS-Konfiguration (Cross-Origin Resource Sharing) eingerichtet wurden, lesen Sie unter Fehlerbehebung bei CORS-Problemen nach.

Amazon S3-Anfrage-IDs für den AWS Support erhalten

Wenn Sie den AWS Support kontaktieren müssen, weil Fehler oder ein unerwartetes Verhalten in Amazon S3 auftreten, brauchen Sie die Anfrage-ID der fehlgeschlagenen Aktion. Diese Anfrage-IDs ermöglichen dem AWS Support, Ihnen bei der Auflösung Ihrer Probleme zu helfen. Anfrage-IDs werden paarweise vergeben. Sie werden in jeder von Amazon S3 verarbeiteten Antwort zurückgegeben (auch in den fehlerhaften). Der Zugriff darauf erfolgt über Verbose-Protokolle. Es gibt verschiedene übliche Verfahren für den Abruf Ihrer Anforderungs-IDs, darunter S3-Zugriffsprotokolle und CloudTrail-Ereignisse/Datenereignisse.

Nachdem Sie diese Protokolle wiederhergestellt haben, kopieren Sie diese beiden Werte. Sie brauchen sie, wenn Sie den AWS Support kontaktieren. Weitere Informationen zum AWS Support finden Sie unter Kontakt.

Anfrage-IDs mit HTTP ermitteln

Sie können Ihre Anfrage-IDs x-amz-request-id und x-amz-id-2 ermitteln, indem Sie die Abschnitte einer HTTP-Anfrage protokollieren, bevor sie die Zielanwendung erreicht. Es gibt verschiedene Tools von Drittanbietern, mit denen Verbose-Protokolle für HTTP-Anfragen wiederhergestellt werden können. Wählen Sie ein Tool, dem Sie vertrauen, führen Sie es aus, und überwachen Sie den Port, über den Ihr Amazon S3-Datenverkehr läuft, während Sie eine weitere Amazon S3 HTTP-Anfrage senden.

Für HTTP-Anfragen sieht das Paar der Anfrage-IDs wie in den folgenden Beispielen gezeigt aus.

x-amz-request-id: 79104EXAMPLEB723 x-amz-id-2: IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km

Anmerkung

HTTPS-Anfragen werden in den meisten Paketerfassungen verschlüsselt und verborgen.

Anfrage-IDs mit einem Webbrowser ermitteln

Die meisten Webbrowser beinhalten Entwicklerwerkzeuge, die Ihnen gestatten, die Anfrage-Header anzuzeigen.

Für auf einem Webbrowser basierte Anfragen, die einen Fehler zurückgeben, sieht das Paar der Anfrage-IDs wie in den folgenden Beispielen gezeigt aus.

<Error><Code>AccessDenied</Code><Message>Access Denied</Message> <RequestId>79104EXAMPLEB723</RequestId><HostId>IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km</HostId></Error>

Um die das Paar der Anfrage-IDs aus erfolgreichen Anfragen zu erhalten, brauchen Sie die Entwicklerwerkzeuge, um die HTTP-Antwortheader anzuzeigen. Weitere Informationen über Entwicklerwerkzeuge für spezifische Browser finden Sie unter Amazon S3 Fehlerbehebung – Wiederherstellung Ihrer S3-Anfrage-IDs (Troubleshooting - How to recover your S3 request IDs) in den AWS-Entwicklerforen.

Anfrage-IDs mit AWS SDKs ermitteln

Die folgenden Abschnitte enthalten Informationen für die Konfiguration der Protokollierung unter Verwendung eines AWS SDK. Sie können die Verbose-Protokollierung für jede Anfrage und jede Antwort aktivieren, was Sie aber in Produktionssystemen unterlassen sollten, weil große Anfragen/Antworten eine maßgebliche Verlangsamung einer Anwendung verursachen können.

Für AWS SDK-Anfragen sieht das Paar der Anfrage-IDs wie in den folgenden Beispielen gezeigt aus.

Status Code: 403, AWS Service: Amazon S3, AWS Request ID: 79104EXAMPLEB723 AWS Error Code: AccessDenied AWS Error Message: Access Denied S3 Extended Request ID: IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km

Anfrage-IDs mit SDK für PHP ermitteln

Sie können die Protokollierung mit PHP konfigurieren. Weitere Informationen finden Sie unter Wie kann ich sehen, welche Daten übertragen wurden? im FAQ-Abschnitt des AWS SDK for PHP.

Anfrage-IDs mit SDK für Java ermitteln

Sie können die Protokollierung für spezifische Anfragen oder Antworten aktivieren, um nur die relevanten Header zu erfassen. Dazu importieren Sie die Klasse com.amazonaws.services.s3.s3ResponseMetadata. Anschließend können Sie die Anfrage in einer Variablen speichern, bevor Sie die eigentliche Anfrage ausführen. Rufen Sie getCachedResponseMetadata(AmazonWebServiceRequest request).getRequestID() auf, um die protokollierte Anfrage oder Antwort zu erhalten.

PutObjectRequest req = new PutObjectRequest(bucketName, key, createSampleFile()); s3.putObject(req); S3ResponseMetadata md = s3.getCachedResponseMetadata(req); System.out.println("Host ID: " + md.getHostId() + " RequestID: " + md.getRequestId());

Alternativ können Sie eine Verbose-Protokollierung jeder Java-Anfrage und -Antwort verwenden. Weitere Informationen finden Sie unter Verbose-Protokollierung des Netzwerkverkehrs im Thema „Protokollieren von AWS SDK for Java-Aufrufen“ im AWS SDK for Java Developer Guide.

Anfrage-IDs mit AWS SDK für .NET ermitteln

Mit dem eingebauten Protokollierungswerkzeug System.Diagnostics können Sie die Protokollierung in AWS SDK für .NET konfigurieren. Weitere Informationen finden Sie im Post Protokollierung mit dem AWS SDK for .NET (Logging with the AWS SDK for .NET) im AWS Developer Blog.

Anmerkung

Standardmäßig enthält das zurückgegebene Protokoll nur Fehlerinformationen. Die Konfigurationsdatei braucht AWSLogMetrics (und optional AWSResponseLogging), um die Anfrage-IDs zu erhalten.

Anfrage-IDs mit SDK for Python ermitteln

Die Protokollierung in Python konfigurieren Sie, indem Sie Ihrem Code die beiden folgenden Zeilen hinzufügen, um die Debugging-Information in eine Datei auszugeben.

import logging logging.basicConfig(filename="mylog.log", level=logging.DEBUG)

Wenn Sie die Boto Python-Schnittstelle für AWS verwenden, können Sie die Debugging-Stufe auf 2 setzen, wie in den Boto-Dokumenten hier erläutert.

Anfrage-IDs mit SDK für Ruby ermitteln

Sie können Ihre Anfrage-IDs mit SDK für Ruby Version 1, Version 2 oder Version 3 ermitteln.

  • Verwendung der SDK für Ruby- Version 1– Mit der folgenden Codezeile können Sie eine globale HTTP-Übertragungsprotokollierung aktivieren.

    s3 = AWS::S3.new(:logger => Logger.new($stdout), :http_wire_trace => true)
  • Verwendung von SDK für Ruby-Version 2 oder Version 3– Mit der folgenden Codezeile können Sie eine globale HTTP-Übertragungsprotokollierung aktivieren.

    s3 = Aws::S3::Client.new(:logger => Logger.new($stdout), :http_wire_trace => true)

Anfrage-IDs mit AWS CLI ermitteln

Sie erhalten Ihre Anfrage-IDs in der AWS CLI, indem Sie Ihrem Befehl --debug hinzufügen.

Weitere Themen zur Fehlersuche und zum Support finden Sie unter:

Weitere Informationen zur Fehlersuche unter Verwendung von Tools von Drittanbietern finden Sie unter Abrufen von Amazon S3-Anfrage-IDs in den AWS-Entwicklerforen.