Wie kann ich Fehler vom Typ 500 mit der VPC-Link-Integration für das API Gateway beheben?

Lesedauer: 6 Minute
0

Ich habe das Amazon API Gateway mit Link-Integrationen für die Virtual Private Cloud (VPC) konfiguriert. Wenn ich mein API aufrufe, erhalte ich eine Konfiguration oder einen internen Fehler mit einem HTTP-500-Statuscode.

Kurzbeschreibung

AWS API Gateway mit VPC-Links kann aus den folgenden Gründen keinen Datenverkehr an Backend-Ressourcen weiterleiten und gibt einen Statuscode vom Typ HTTP 500 zurück:

  • Der VPC-Link befindet sich im Status Fehlgeschlagen. Oder der Endpunkt-Dienst ist gelöscht oder befindet sich im Status Abgelehnt.
  • Das registrierte Ziel für die Zielgruppe ist fehlerhaft oder wird nicht verwendet.
    **Hinweis:**Wenn über 60 Tage lang kein Datenverkehr über den VPC-Link gesendet wird, wird der Link INAKTIV. Weitere Informationen finden Sie unter Arbeiten mit VPC-Links für HTTP-APIs.
  • Sicherheitsgruppen lassen an bestimmten Ports keinen Datenverkehr zu.
  • Die Netzwerk-Zugriffssteuerungsliste (Network ACL) blockiert den Datenverkehr.
  • Das Ziel überwacht die Zielports nicht.
  • Das Domainnamenzertifikat stimmt nicht mit dem TLS-aktivierten Network Load Balancer oder Application Load Balancer überein.

Wenn Amazon CloudWatch Logs für Ihre API aktiviert ist, wird in den Ausführungsprotokollen eine Fehlermeldung mit der Ursache des Fehlers angezeigt.

Beispiel für HTTP-500-Fehlermeldungen in CloudWatch-Protokollen

„Donnerstag, 04. August, 17:48:21 Uhr UTC 2022 : Die Ausführung ist aufgrund eines Konfigurationsfehlers fehlgeschlagen: Bei der Ausführung Ihrer Anfrage ist ein interner Fehler aufgetreten. Donnerstag, 04. August, 17:48:21 UTC 2022 : Verfahren abgeschlossen mit Status: 500"

-oder-

„Donnerstag, 04. August, 19:50:21 Uhr UTC 2022 : Die Ausführung ist aufgrund eines Konfigurationsfehlers fehlgeschlagen: Der Hostname „domain.com.com“ stimmt nicht mit dem vom Peer angegebenen Zertifikatsbetreff überein (CN=myinstance.com)
Donnerstag, 04. August, 19:50:21 Uhr UTC 2022 : Verfahren abgeschlossen mit Status: 500"

Lösung

Ermitteln der Fehlerursache

Aktivieren Sie die Protokollierung von CloudWatch API. Stellen Sie sicher, dass Sie die Ausführungsprotokollierung konfigurieren.

Hinweis: Wählen Sie bei der Konfiguration der Protokollierungseinstellungen unter Protokollebene die Option INFO aus. Wählen Sie dann Vollständige Anfragen/Antwortdaten protokollieren aus.

Um die Ursache der Fehler zu ermitteln, überprüfen Sie die Ausführungsprotokolle der REST APIs in CloudWatch.

Suchen Sie in den Ausführungsprotokollen nach der Fehlermeldung

Fehler: Die Ausführung ist aufgrund eines Konfigurationsfehlers fehlgeschlagen: Bei der Ausführung Ihrer Anfrage ist ein interner Fehler aufgetreten

Überprüfen Sie die folgenden Konfigurationen:

  • Stellen Sie sicher, dass der Load Balancer für den VPC-Link vorhanden ist und nicht gelöscht wurde.
  • Stellen Sie sicher, dass sich der VPC-Link im Status VERFÜGBAR befindet. Wenn sich der VPC-Link im Status FEHLGESCHLAGEN befindet, müssen Sie einen neuen VPC-Link erstellen und ihn mit Ihrer API verknüpfen.
    **Hinweis:**Stellen Sie die API bereit, nachdem Sie die Integrationsanfrage geändert haben.
  • Stellen Sie sicher, dass sich die Endpunktverbindung für den VPC-Link im Status VERFÜGBAR befindet.
  • Wenn die VPC-ID mit einer Stufenvariablen referenziert wird, überprüfen Sie, ob die VPC-Link-ID korrekt ist.
  • Stellen Sie sicher, dass der Load Balancer für den VPC-Link den HTTP/HTTPS-Port überwacht, für den die Anfrage konfiguriert ist. Überprüfen Sie, ob die Listener für den richtigen Port konfiguriert sind. Stellen Sie sicher, dass die Netzwerk-ACLs die Anfrage nicht blockieren.
  • Stellen Sie sicher, dass die Zielgruppe die Anfrage akzeptiert. Die Netzwerk-ACLs müssen eingehenden und ausgehenden Datenverkehr und die Sicherheitsgruppen eingehenden Datenverkehr für die konfigurierten Ports zulassen.
  • Wenn die Anfrage einen Fehler vom Typ 500 zurückgibt, empfängt die Verbindung möglicherweise TCP-RST-Pakete. Stellen Sie sicher, dass der Backend-Server läuft. Stellen Sie sicher, dass auf dem Backend-Ziel des Zielports ein Dienst ausgeführt wird. Stellen Sie sicher, dass das Backend-Ziel den Zielport überwacht.
  • Stellen Sie sicher, dass die Option Regeln für eingehenden Datenverkehr in AWS PrivateLink durchsetzen deaktiviert ist. Eingehende Regeln für PrivateLink-Datenverkehr erzwingen wendet alle eingehenden und ausgehenden Sicherheitsgruppenregeln auf den Datenverkehr vom VPC-Link an. Wenn Sie die Sicherheitsgruppe nicht so konfigurieren, dass sie Datenverkehr über den VPC-Link zulässt, kann die Sicherheitsgruppe den API-Gateway-Datenverkehr blockieren. Um Sicherheitsgruppenregeln auf Datenverkehr anzuwenden, der nicht vom VPC-Link stammt, deaktivieren Sie die Option Eingehende Regeln für PrivateLink-Datenverkehr erzwingen.

Fehler: Die Ausführung ist aufgrund eines Konfigurationsfehlers fehlgeschlagen: Der Hostname „domain.com.com“ stimmt nicht mit dem vom Peer angegebenen Zertifikatsbetreff überein (CN=myinstance.com)

Stellen Sie sicher, dass der Domainname des Endpunkts mit dem Zertifikat übereinstimmt, welches das TLS-aktivierte Ziel des Load Balancers zurückgibt.

Fehler: Die Ausführung ist aufgrund eines Konfigurationsfehlers fehlgeschlagen: Fehler beim Erstellen des PKIX-Pfads: sun.security.provider.certpath.SunCertPathBuilderException: Es konnte kein gültiger Zertifizierungspfad zum angeforderten Ziel gefunden werden

Dieser Fehler tritt auf, wenn das API-Gateway die Stammzertifizierungsstelle nicht finden kann. Selbst wenn insecureSkipVerification in der Eigenschaft TlsConfig der Integration auf true gesetzt ist, führt API Gateway eine grundlegende Zertifikatsvalidierung durch. Bei der Validierung werden die folgenden Informationen überprüft:

  • Das Ablaufdatum des Zertifikats
  • Der Hostname
  • Das Vorhandensein einer Stammzertifizierungsstelle

Zertifikate, die Sie auf der Ziel-Instance konfigurieren, müssen auf der Liste der unterstützten Zertifizierungsstellenanbieter als vertrauenswürdig eingestuft werden.

Fehler: Die Ausführung ist aufgrund eines Konfigurationsfehlers fehlgeschlagen: Die Signatur ECDH-ServerKeyExchange kann nicht überprüft werden

Dieser Fehler tritt auf, wenn ein Schlüssel und das entsprechende Zertifikat nicht übereinstimmen und der TLS-Handshake fehlschlägt. Um dieses Problem zu beheben, überprüfen Sie den Inhalt der Dateien, die Sie für Ihre konfigurierten Zertifizierungsstellen, Zertifikate und Schlüssel verwendet haben.

Fehler: Die Ausführung ist aufgrund eines internen Fehlers fehlgeschlagen

Dieser Fehler tritt auf, wenn Amazon API Gateway keine Verbindung zum Load Balancer über die VPC-Verbindung hergestellt hat, weil das Ziel auf dem Load Balancer zurückgesetzt wird. Um dieses Problem zu beheben, legen Sie für das Ziel ein längeres Timeout als das Standard-Timeout (350 Sekunden) auf dem Load Balancer fest.

Fehler: Die Ausführung ist aufgrund eines Konfigurationsfehlers fehlgeschlagen: Keine gültige Protokollversion: {Text of string}

Dieser Fehler tritt auf, wenn die Integration mit einer HTTP-Antwort geantwortet hat, die nicht gültig ist und nicht der HTTP-Spezifikation entspricht. Dies kann bedeuten, dass das integrierte Backend Daten an das Amazon API Gateway zurücksendet, die nicht gültig sind.

Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

  • Reproduzieren Sie die Anfrage, die Sie von Amazon API Gateway gestellt haben. Um den Dienst-Endpunkt zu testen, den Amazon API Gateway verwendet, erstellen Sie einen VPC-Endpunkt, der mit der Dienst-Endpunkt-ID verknüpft ist. Sie können auch Paketerfassungen ausführen, um die Antwort zu überprüfen, die vom integrierten Backend zurückgegeben wird.
  • Um eine doppelte Verschlüsselung zu vermeiden, ändern Sie das Protokoll des Load Balancers je nach Antwort des Ziels auf TLS oder TCP.
  • Stellen Sie sicher, dass insecureSkipVerification in der Eigenschaft TlsConfig der Integration auf true gesetzt ist.

Ähnliche Informationen

Grundlegendes zu VPC-Links in privaten Integrationen in Amazon API Gateway

Überwachen der Ausführung von REST API mit Messwerten von Amazon CloudWatch

Einrichten eines Network Load Balancers für private Integrationen in API Gateway

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten