Erstellen von angepassten Reaktionen auf Fehlermeldungen - Amazon CloudFront

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.

Erstellen von angepassten Reaktionen auf Fehlermeldungen

Wenn ein Objekt, das Sie über bereitstellen, aus irgendeinem Grund nicht verfügbar CloudFront ist, gibt Ihr Webserver in der Regel einen relevanten HTTP-Statuscode an zurück CloudFront , um dies anzugeben. Wenn ein Betrachter beispielsweise eine ungültige URL anfordert, gibt Ihr Webserver einen HTTP 404 (Not Found)-Statuscode an zurück CloudFrontund gibt diesen Statuscode an den Betrachter CloudFront zurück.

Sie können so konfigurieren CloudFront , dass stattdessen eine benutzerdefinierte Fehlerantwort an den Viewer zurückgegeben wird, wenn Sie möchten. Sie haben auch mehrere Möglichkeiten zu verwalten, wie bei einem Fehler CloudFront reagiert. Um Optionen für benutzerdefinierte Fehlermeldungen anzugeben, aktualisieren Sie Ihre CloudFront Verteilung, um diese Werte anzugeben. Weitere Informationen finden Sie unter Konfigurieren von Fehlermeldungsverhalten.

Wenn Sie so konfigurieren CloudFront , dass eine benutzerdefinierte Fehlerseite für einen HTTP-Statuscode zurückgegeben wird, die benutzerdefinierte Fehlerseite jedoch nicht verfügbar ist, gibt den Statuscode an den Betrachter CloudFront zurück, der vom Ursprung CloudFront empfangen wurde, der die benutzerdefinierten Fehlerseiten enthält. Angenommen, Ihr benutzerdefinierter Ursprung gibt einen 500-Statuscode zurück und Sie haben so konfiguriert CloudFront , dass eine benutzerdefinierte Fehlerseite für einen 500-Statuscode aus einem Amazon S3-Bucket abgerufen wird. Allerdings hat jemand versehentlich die benutzerdefinierte Fehlerseite aus Ihrem Bucket gelöscht. CloudFront gibt einen HTTP 404-Statuscode (Not Found) an den Betrachter zurück, der das Objekt angefordert hat.

Wenn eine benutzerdefinierte Fehlerseite an einen Betrachter CloudFront zurückgibt, zahlen Sie die CloudFront Standardgebühren für die benutzerdefinierte Fehlerseite, nicht die Gebühren für das angeforderte Objekt. Weitere Informationen zu CloudFront Gebühren finden Sie unter Amazon CloudFront-Preise.

Konfigurieren von Fehlermeldungsverhalten

Um benutzerdefinierte Fehlerantworten zu konfigurieren, können Sie die - CloudFront Konsole, die CloudFront -API oder verwendenAWS CloudFormation. Unabhängig davon, wie Sie die Konfiguration aktualisieren, sollten Sie die folgenden Tipps und Empfehlungen beachten:

  • Speichern Sie Ihre benutzerdefinierten Fehlerseiten an einem Ort, auf den zugegriffen werden kann CloudFront. Wir empfehlen Ihnen, sie in einem Amazon-S3-Bucket zu speichern und sie nicht am selben Ort wie den Rest der Inhalte Ihrer Website oder Anwendung zu speichern. Wenn Sie die benutzerdefinierten Fehlerseiten auf demselben Ursprung wie Ihre Website oder Anwendung speichern und der Ursprung beginnt, 5xx-Fehler zurückzugeben, CloudFront kann die benutzerdefinierten Fehlerseiten nicht abrufen, da der Ursprungsserver nicht verfügbar ist. Weitere Informationen finden Sie unter Speichern von Objekten und benutzerdefinierte Fehlerseiten an anderen Speicherorten.

  • Stellen Sie sicher, dass über die Berechtigung zum Abrufen Ihrer benutzerdefinierten Fehlerseiten CloudFront verfügt. Wenn die benutzerdefinierten Fehlerseiten in Amazon S3 gespeichert sind, müssen die Seiten öffentlich zugänglich sein oder Sie müssen eine CloudFront Ursprungszugriffssteuerung (OAC) konfigurieren. Wenn die benutzerdefinierten Fehlerseiten in einem benutzerdefinierten Ursprung gespeichert sind, müssen die Seiten öffentlich zugänglich sein.

  • (Optional) Konfigurieren Sie Ihren Ursprung so, dass ein Cache-Control- oder Expires-Header zusammen mit den benutzerdefinierten Fehlerseiten hinzugefügt wird, wenn Sie möchten. Sie können auch die Einstellung Error Caching Minimum TTL verwenden, um zu steuern, wie lange die benutzerdefinierten Fehlerseiten CloudFront zwischenspeichert. Weitere Informationen finden Sie unter Steuern, wie lange Fehler CloudFront zwischenspeichert.

Konfigurieren von benutzerdefinierten Fehlerantworten (CloudFront-Konsole)

Um benutzerdefinierte Fehlerantworten in der CloudFront Konsole zu konfigurieren, benötigen Sie eine CloudFront -Verteilung. In der Konsole stehen die Konfigurationseinstellungen für benutzerdefinierte Fehlerantworten nur für vorhandene Verteilungen zur Verfügung. Informationen zum Erstellen einer Verteilung finden Sie unter Erste Schritte mit einer einfachen CloudFront Verteilung.

Konfigurieren benutzerdefinierter Fehlerantworten (Konsole)
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Seite Verteilungen in der - CloudFront Konsole unter https://console.aws.amazon.com/cloudfront/v4/home#distributions.

  2. Wählen Sie in der Liste der Verteilungen die zu aktualisierende Verteilung aus.

  3. Wählen Sie die Registerkarte Fehlerseiten und wählen Sie dann Benutzerdefinierte Fehlerantwort erstellen.

  4. Geben Sie die entsprechenden Werte ein. Weitere Informationen finden Sie unter Benutzerdefinierte Fehlerseiten und Zwischenspeicherung von Fehlern.

  5. Nachdem Sie die gewünschten Werte eingegeben haben, wählen Sie Erstellen.

Konfigurieren von benutzerdefinierten Fehlerantworten (CloudFront-API oder AWS CloudFormation)

Um benutzerdefinierte Fehlerantworten mit der CloudFront API oder zu konfigurierenAWS CloudFormation, verwenden Sie den CustomErrorResponse Typ in einer Verteilung. Weitere Informationen finden Sie hier:

Erstellen einer benutzerdefinierten Fehlerseite für bestimmte HTTP-Statuscodes

Wenn Sie lieber eine benutzerdefinierte Fehlermeldung anstelle der Standardnachricht anzeigen möchten, z. B. eine Seite, die dieselbe Formatierung wie der Rest Ihrer Website verwendet, können Sie dem Betrachter ein Objekt (z. B. eine HTML-Datei) CloudFront zurückgeben, das Ihre benutzerdefinierte Fehlermeldung enthält.

Um die Datei anzugeben, die zurückgegeben werden soll, und die Fehler, für die die Datei zurückgegeben werden soll, aktualisieren Sie Ihre CloudFront Verteilung, um diese Werte anzugeben. Weitere Informationen finden Sie unter Konfigurieren von Fehlermeldungsverhalten.

Zum Beispiel ist das Folgende eine benutzerdefinierte Fehlerseite:


				AWS 404-Seite

Sie können ein anderes Objekt für jeden unterstützten HTTP-Statuscode festlegen oder Sie können dasselbe Objekt für alle unterstützten Statuscodes verwenden. Es ist möglich, benutzerdefinierte Fehlerseiten für einige Statuscodes festzulegen und für andere nicht.

Die Objekte, die Sie über bereitstellen, CloudFront können aus einer Vielzahl von Gründen nicht verfügbar sein. Diese gliedern sich in zwei große Kategorien:

  • Client-Fehler weisen auf ein Problem mit der Anfrage hin. Beispielsweise ist ein Objekt mit dem angegebenen Namen nicht verfügbar oder der Benutzer verfügt nicht über die erforderlichen Berechtigungen, um ein Objekt in Ihrem Amazon S3-Bucket abzurufen. Wenn ein Client-Fehler auftritt, gibt der Ursprung einen HTTP-Statuscode im Bereich 4xx an zurückCloudFront.

  • Server-Fehler weisen auf ein Problem mit dem Ursprungs-Server hin. Beispielsweise ist der HTTP-Server ausgelastet oder nicht verfügbar. Wenn ein Serverfehler auftritt, gibt Ihr Ursprungs-Server entweder einen HTTP-Statuscode im Bereich 5xx an zurück CloudFrontoder erhält für einen bestimmten Zeitraum CloudFront keine Antwort von Ihrem Ursprungs-Server und geht von einem 504-Statuscode aus (Gateway-Timeout).

Die HTTP-Statuscodes, für die eine benutzerdefinierte Fehlerseite zurückgeben CloudFront kann, umfassen Folgendes:

  • 400, 403, 404, 405, 414, 416

    Anmerkung

    Sie können eine benutzerdefinierte Fehlerseite für HTTP-Statuscode 416 (Requested Range Not Satisfiable) erstellen und Sie können den HTTP-Statuscode ändern, den CloudFront an Betrachter zurückgibt, wenn Ihr Ursprung einen Statuscode 416 an CloudFront zurückgibt. (Weitere Informationen finden Sie unter Ändern der von zurückgegebenen Antwortcodes CloudFront.) CloudFront Allerdings speichert keine Statuscode 416-Antworten zwischen. Selbst wenn Sie einen Wert für Error Caching Minimum TTL für Statuscode 416 angeben, CloudFront verwendet ihn daher nicht.

  • 500, 501, 502, 503, 504

    Anmerkung

    In einigen Fällen CloudFront gibt keine benutzerdefinierte Fehlerseite für den HTTP 503-Statuscode zurück, selbst wenn Sie CloudFront dies konfigurieren. Wenn der CloudFront Fehlercode Capacity Exceeded oder lautetLimit Exceeded, gibt einen 503-Statuscode an den Betrachter CloudFront zurück, ohne Ihre benutzerdefinierte Fehlerseite zu verwenden.

Eine ausführliche Erläuterung, wie mit Fehlerantworten von Ihrem Ursprung CloudFront umgeht, finden Sie unter So CloudFront verarbeitet und speichert HTTP-Statuscodes 4xx und 5xx von Ihrem Ursprung.

Speichern von Objekten und benutzerdefinierte Fehlerseiten an anderen Speicherorten

Wenn Sie Ihre Objekte und Ihre benutzerdefinierten Fehlerseiten an verschiedenen Orten speichern möchten, muss Ihre Verteilung ein Cache-Verhalten mit den folgenden Eigenschaften enthalten:

  • Der Wert von Path Pattern stimmt mit dem Pfad zu Ihren benutzerdefinierten Fehlermeldungen überein. Angenommen, Sie haben benutzerdefinierte Fehlerseiten für 4xx-Fehler in einem Amazon S3-Bucket in einem Verzeichnis mit dem Namen gespeicher /4xx-errors. Ihre Verteilung muss ein Cache-Verhalten beinhalten, für welches das Pfadmuster Anfragen für Ihre benutzerdefinierten Fehlerseiten an diesen Ort weiterleitet, z. B, /4xx-errors/*.

  • Der Wert von Origin legt den Wert von Origin ID für den Ursprung fest, der Ihre benutzerdefinierten Fehlerseiten enthält.

Weitere Informationen finden Sie unter Einstellungen für das Cache-Verhalten.

Ändern der von zurückgegebenen Antwortcodes CloudFront

Sie können so konfigurieren CloudFront , dass ein anderer HTTP-Statuscode an den Viewer zurückgegeben wird als CloudFront der vom Ursprung empfangene. Wenn Ihr Ursprung beispielsweise einen 500-Statuscode an zurückgibt CloudFront, CloudFront möchten Sie möglicherweise eine benutzerdefinierte Fehlerseite und einen 200-Statuscode (OK) an den Betrachter zurückgeben. Es gibt eine Vielzahl von Gründen, aus denen Sie möglicherweise einen Statuscode an den Betrachter CloudFront zurückgeben möchten, der sich von dem unterscheidet, den Ihr Ursprung an zurückgegeben hat CloudFront:

  • Einige Internetgeräte (beispielsweise einige Firewalls und Unternehmens-Proxys) fangen HTTP 4xx- und 5xx-Statuscodes ab und verhindern, dass die Antwort an den Betrachter zurückgegeben wird. Wenn Sie in diesem Szenario 200 ersetzen, wird die Antwort nicht abgefangen.

  • Wenn es Ihnen nicht wichtig ist, zwischen verschiedenen Client-Fehlern oder Serverfehlern zu unterscheiden, können Sie 400 oder 500 als Wert angeben, CloudFront den für alle 4xx- oder 5xx-Statuscodes zurückgibt.

  • Möglicherweise möchten Sie einen 200-Statuscode (OK) und eine statische Website zurückgeben, sodass Ihre Kunden nicht wissen, dass die Website nicht verfügbar ist.

Wenn Sie CloudFront Standardprotokolle aktivieren und so konfigurieren CloudFront, dass der HTTP-Statuscode in der Antwort geändert wird, enthält der Wert der sc-status Spalte in den Protokollen den von Ihnen angegebenen Statuscode. Der Wert der x-edge-result-type-Spalte wird jedoch nicht beeinflusst. Sie enthält den Ergebnistyp der Antwort vom Ursprung. Angenommen, Sie konfigurieren CloudFront so, dass der Statuscode 200 an den Betrachter zurückgegeben wird, wenn der Ursprung 404 (Nicht gefunden) an zurückgibt CloudFront. Wenn der Ursprung auf eine Anfrage mit dem Statuscode 404 antwortet, ist der Wert in der Spalte sc-status im Protokoll 200, der Wert in der Spalte x-edge-result-type jedoch Error.

Sie können so konfigurieren CloudFront , dass einer der folgenden HTTP-Statuscodes zusammen mit einer benutzerdefinierten Fehlerseite zurückgegeben wird:

  • 200

  • 400, 403, 404, 405, 414, 416

  • 500, 501, 502, 503, 504

Steuern, wie lange Fehler CloudFront zwischenspeichert

CloudFront speichert Fehlermeldungen für eine Standarddauer von 10 Sekunden zwischen. CloudFront sendet dann die nächste Anfrage für das Objekt an Ihren Ursprung, um festzustellen, ob das Problem, das den Fehler verursacht hat, behoben wurde und das angeforderte Objekt verfügbar ist.

Sie können die Zwischenspeicherungsdauer für Fehler – die Mindest-TTL für die Zwischenspeicherung von Fehlern – für jeden 4xx- und 5xx-Statuscode angeben, den CloudFront zwischenspeichert. (Weitere Informationen finden Sie unter HTTP-Statuscodes 4xx und 5xx, die CloudFront zwischenspeichert.) Wenn Sie eine Dauer angeben, beachten Sie Folgendes:

  • Wenn Sie eine kurze Zwischenspeicherungsdauer für Fehler angeben, CloudFront leitet mehr Anfragen an Ihren Ursprung weiter, als wenn Sie eine längere Dauer angeben. Bei 5xx-Fehlern verschlimmert dies möglicherweise das Problem, das ursprünglich dazu geführt hat, dass Ihr Ursprung einen Fehler zurückgibt.

  • Wenn Ihr Ursprung einen Fehler für ein Objekt zurückgibt, CloudFront beantwortet Anfragen für das Objekt entweder mit der Fehlerantwort oder mit Ihrer benutzerdefinierten Fehlerseite, bis die Zwischenspeicherungsdauer für Fehler abgelaufen ist. Wenn Sie eine lange Zwischenspeicherungsdauer für Fehler angeben, beantwortet Anfragen CloudFront möglicherweise noch lange, nachdem das Objekt wieder verfügbar ist, mit einer Fehlerantwort oder Ihrer benutzerdefinierten Fehlerseite.

Anmerkung

Sie können eine benutzerdefinierte Fehlerseite für HTTP-Statuscode 416 (Requested Range Not Satisfiable) erstellen und Sie können den HTTP-Statuscode ändern, den CloudFront an Betrachter zurückgibt, wenn Ihr Ursprung einen Statuscode 416 an CloudFront zurückgibt. (Weitere Informationen finden Sie unter Ändern der von zurückgegebenen Antwortcodes CloudFront.) Allerdings CloudFront speichert keine Statuscode 416-Antworten zwischen. Selbst wenn Sie also einen Wert für Error Caching Minimum TTL für Statuscode 416 angeben, CloudFront verwendet ihn nicht.

Wenn Sie steuern möchten, wie lange Fehler für einzelne Objekte CloudFront zwischenspeichert, können Sie Ihren Ursprungs-Server so konfigurieren, dass der entsprechende Header zur Fehlerantwort für dieses Objekt hinzugefügt wird.

Wenn der Ursprung eine Cache-Control: max-age- oder -Cache-Control: s-maxageRichtlinie oder einen -ExpiresHeader hinzufügt, CloudFront speichert Fehlerantworten für den höheren Wert im -Header oder im Error Caching Minimum TTL zwischen.

Anmerkung

Beachten Sie, dass die Werte für Cache-Control: max-age und Cache-Control: s-maxage nicht größer als der Wert für Maximum TTL sein können, der für das Cache-Verhalten festgelegt wurde, für das die Fehlerseite abgerufen wird.

Wenn der Ursprung andere Cache-Control Direktiven oder keine Header hinzufügt, CloudFront speichert Fehlermeldungen für den Wert von Error Caching Minimum TTL zwischen.

Wenn die Ablaufzeit für einen 4xx- oder 5xx-Statuscode für ein Objekt länger ist, als Sie warten möchten, und das Objekt wieder verfügbar ist, können Sie den zwischengespeicherten Fehlercode mit der URL des angefragten Objekts aufheben. Wenn Ihr Ursprung eine Fehlermeldung für mehrere Objekte zurückgibt, müssen Sie die Gültigkeit aller Objekte einzeln aufheben. Weitere Informationen zur Aufhebung der Gültigkeit von Objekten finden Sie unter Aufheben der Gültigkeit von Dateien.