Weiterleitung von Anforderungen - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Weiterleitung von Anforderungen

Programme, die Anfragen für Buckets stellen, die mit der CreateBucket-API und einer CreateBucketConfiguration erstellt wurden, müssen Umleitungen unterstützen. Darüber hinaus entstehen möglicherweise für einige Clients Probleme, die DNS TTLs nicht unterstützen.

Dieser Abschnitt beschreibt Weiterleitungs- und DNS-Aspekte, die Sie beim Entwurf Ihres Service oder Ihrer Anwendung für Amazon S3 berücksichtigen sollten.

Anforderungsumleitung und die REST-API

Amazon S3 verwendet das DNS (Domain Name System), um Anfragen an Einrichtungen weiterzuleiten, die sie verarbeiten können. Dieses System arbeitet effektiv, aber es können temporäre Routing-Fehler auftreten. Trifft eine Anfrage am falschen Amazon-S3-Standort ein, reagiert Amazon S3 mit einer temporären Umleitung, die den Auftraggeber anweist, die Anfrage an einen neuen Endpunkt zu senden. Ist eine Anfrage fehlerhaft aufgebaut, verwendet Amazon S3 permanente Umleitungen, um dem Auftraggeber mitzuteilen, wie die Anfrage korrekt ausgeführt wird.

Wichtig

Um diese Funktion nutzen zu können, benötigen Sie eine Anwendung, die Amazon-S3-Umleitungsantworten verarbeiten kann. Die einzige Ausnahme bilden Anwendungen, die ausschließlich mit Buckets arbeiten, die ohne erstellt wurde <CreateBucketConfiguration>. Weitere Informationen über Standorteinschränkungen finden Sie unter Zugreifen auf einen Amazon-S3-Bucket und Auflisten des Buckets.

Für alle Regionen, die nach dem 20. März 2019 gestartet wurden, gibt Amazon S3 den Fehler „HTTP 400 Bad Request“ zurück, wenn eine Anforderung an einer falschen Amazon-S3-Position empfangen wird.

Weitere Informationen zum Aktivieren oder Deaktivieren einer AWS-Region finden Sie unter AWS-Regionen und -Endpunkte in der Allgemeine AWS-Referenz.

DNS-Weiterleitung

Die DNS-Weiterleitung leitet Anfragen an geeignete Amazon-S3-Einrichtungen weiter. Die folgende Abbildung und Vorgehensweise zeigen ein Beispiel für DNS-Routing.


				Diagramm mit den Schritten, die auftreten, wenn ein DNS-Server Anfragen vom Client an Einrichtung B weiterleitet.
DNS-Routing-Anforderungsschritte
  1. Der Client stellt eine DNS-Anfrage, um ein Objekt in Amazon S3 speichern zu lassen.

  2. Der Client erhält eine oder mehrere IP-Adressen für Einrichtungen, die die Anfrage verarbeiten können. In diesem Beispiel ist die IP-Adresse für die Einrichtung B.

  3. Der Client stellt eine Anforderung an Amazon-S3-Einrichtung B.

  4. Einrichtung B gibt eine Kopie des Objekts an den Kunden zurück.

Temporäre Anforderungsumleitung

Eine temporäre Umleitung ist eine Art Fehlermeldung, die dem Auftraggeber signalisiert, dass er die Anfrage an einen anderen Endpunkt senden sollte. Aufgrund der verteilten Natur von Amazon S3 können Anfragen temporär in die falsche Einrichtung weitergeleitet werden. Dies tritt am wahrscheinlichsten auf, unmittelbar nachdem Buckets erstellt oder gelöscht wurden.

Wenn Sie beispielsweise einen neuen Bucket erstellen und sofort eine Anfrage für den Bucket machen, werden Sie möglicherweise temporär umgeleitet, abhängig von der Standorteinschränkung des Buckets. Wenn Sie den Bucket in der AWS-Region USA Ost (Nord-Virginia) erstellt haben, wird die Umleitung nicht angezeigt, da dies auch der Standard-Amazon-S3-Endpunkt ist.

Wenn der Bucket jedoch in einer anderen Region erstellt wird, gehen alle Anfragen für den Bucket an den Standard-Endpunkt, während der DNS-Eintrag des Buckets propagiert wird. Der Standard-Endpunkt leitet die Anfrage mit einer HTTP 302-Antwort an den richtigen Endpunkt weiter. Temporäre Umleitungen enthalten eine URI zur richtigen Einrichtung, die Sie verwenden können, um die Anfrage sofort erneut zu senden.

Wichtig

Verwenden Sie keinen Endpunkt wieder, der aus einer vorherigen Umleitungsantwort stammt. Das scheint zu funktionieren (manchmal sogar sehr lange), kann aber unvorhersehbare Ergebnisse erzeugen und schlägt irgendwann ohne weitere Mitteilung fehl.

Die folgende Abbildung und Vorgehensweise zeigen ein Beispiel für eine temporäre Umleitung.


				Diagramm mit den Schritten, die auftreten, wenn ein Client eine Anfrage an B sendet und nach C umgeleitet wird.
Temporäre Umleitungsschritte für Anfragen
  1. Der Client stellt eine DNS-Anfrage, um ein Objekt in Amazon S3 speichern zu lassen.

  2. Der Client erhält eine oder mehrere IP-Adressen für Einrichtungen, die die Anfrage verarbeiten können.

  3. Der Client stellt eine Anforderung an Amazon-S3-Einrichtung B.

  4. Einrichtung B gibt eine Umleitung zurück, die angibt, dass das Objekt an Standort C zur Verfügung steht.

  5. Der Client sendet Anfrage noch einmal an Einrichtung C.

  6. Einrichtung C gibt eine Kopie des Objekts zurück.

Permanente Anforderungsumleitung

Eine permanente Anfrageumleitung zeigt an, dass Ihre Anfrage eine fehlerhafte Adresse für eine Ressource angegeben hat. Permanente Umleitungen treten beispielsweise auf, wenn Sie eine Anfrage mit Angabe eines Pfads für den Zugriff auf einen Bucket verwenden, der mit erstellt wurd <CreateBucketConfiguration>. Weitere Informationen finden Sie unter Zugreifen auf einen Amazon-S3-Bucket und Auflisten des Buckets.

Um diese Fehler bei der Entwicklung zu erkennen, enthält diese Art Umleitung keinen HTTP Location-Header, der Ihnen ermöglicht, die Anfrage automatisch an den richtigen Standort zu verfolgen. Weitere Informationen über die Verwendung des richtigen Amazon-S3-Endpunkts finden Sie im resultierenden XML-Fehlerdokument.

Beispiele für Anforderungsumleitung

Im Folgenden finden Sie Beispiele für temporäre Umleitungsantworten.

Temporäre Umleitungsantwort der REST-API

HTTP/1.1 307 Temporary Redirect Location: http://awsexamplebucket1.s3-gztb4pa9sq.amazonaws.com/photos/puppy.jpg?rk=e2c69a31 Content-Type: application/xml Transfer-Encoding: chunked Date: Fri, 12 Oct 2007 01:12:56 GMT Server: AmazonS3 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>TemporaryRedirect</Code> <Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message> <Endpoint>awsexamplebucket1.s3-gztb4pa9sq.amazonaws.com</Endpoint> </Error>

Temporäre Umleitungsantwort der SOAP API

Anmerkung

Die SOAP-Unterstützung über HTTP ist veraltet, SOAP steht über HTTPS aber noch zur Verfügung. Neue Amazon-S3-Funktionen werden unter SOAP nicht unterstützt. Wir empfehlen, statt SOAP entweder die REST-API oder die AWS-SDKs zu verwenden.

<soapenv:Body> <soapenv:Fault> <Faultcode>soapenv:Client.TemporaryRedirect</Faultcode> <Faultstring>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Faultstring> <Detail> <Bucket>images</Bucket> <Endpoint>s3-gztb4pa9sq.amazonaws.com</Endpoint> </Detail> </soapenv:Fault> </soapenv:Body>

Überlegungen zu DNS

Eine der Entwurfsanforderungen von Amazon S3 ist eine extrem hohe Verfügbarkeit. Unter anderem erfüllen wir diese Anforderung, indem wir die dem Amazon-S3-Endpunkt in DNS zugeordnete IP-Adressen nach Bedarf aktualisieren. Diese Änderungen werden in kurzlebigen Clients automatisch reflektiert, nicht jedoch in einigen langlebigen Clients. Für langlebige Clients ist eine spezielle Maßnahme erforderlich, um den Amazon-S3-Endpunkt regelmäßig wieder aufzulösen, um von diesen Änderungen zu profitieren. Weitere Informationen zu virtuellen Maschinen (VMs) finden Sie hier:

  • Für Java speichert die JVM von Sun die DNS-Suchen standardmäßig auf unbegrenzte Zeit. Informationen zum Ändern dieses Verhaltens finden Sie im Abschnitt „InetAddress Caching“ in der InetAddress-Dokumentation.

  • Für PHP speichert die persistente PHP VM, die in den gebräuchlichsten Bereitstellungskonfigurationen ausgeführt wird, DNS-Suchen, bis die VM neu gestartet wird. Weitere Informationen finden Sie in den getHostByName-PHP-Dokumenten.