Direkt zum Inhalt

Wie behebe ich 500-Fehler, wenn ich VPC-Link-Integrationen mit API Gateway-REST-APIs verwende?

Lesedauer: 7 Minute
0

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

Kurzbeschreibung

API Gateway mit VPC-Link-Integrationen leitet den Datenverkehr möglicherweise nicht an Backend-Ressourcen weiter.

Möglicherweise wird aus einem der folgenden Gründe auch ein „HTTP 500“-Statuscode zurückgegeben:

  • Der VPC-Link befindet sich im Status Fehlgeschlagen. Oder der Endpunktdienst existiert nicht oder befindet sich im Status Abgelehnt.
  • Die Zielgruppe zeigt das registrierte Ziel als fehlerhaft oder nicht in Gebrauch an.
  • 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 du Amazon CloudWatch Logs für deine API aktiviert hast, erscheint in den Ausführungsprotokollen eine Fehlermeldung, die die Ursache des Fehlers beinhaltet.

Lösung

Backend-Konnektivität überprüfen

Bevor du Probleme mit API Gateway behebst, führe eine der folgenden Aktionen durch:

  • Verwende Tools wie curl oder Postman, um aus deiner VPC heraus eine Anfrage an den DNS-Namen des Network Load Balancer zu senden. Wenn die Anfrage fehlschlägt, liegt ein Problem mit deiner Network Load Balancer-Konfiguration, dem Backend-Zielzustand oder dem Netzwerk vor.
  • Verwende VPC Reachability Analyzer, um den Verkehrsfluss von den API Gateway-VPC-Link-Subnetzen zu deinen Backend-Ressourcen zu überprüfen.

Bestätigen der Fehlerursache

Aktiviere die CloudWatch-API-Protokollierung. Konfiguriere außerdem die Ausführungsprotokollierung.

Hinweis: Wenn du die Protokollierungseinstellungen konfigurierst, setze die Protokollierungsstufe auf Fehler- und Infoprotokolle und wähle Datenverfolgung aus. Diese Einstellungen bieten dir die vollständigen Anfrage- und Antwortprotokolle.

Um die Ursache der Fehler zu ermitteln, überprüfe die Ausführungsprotokolle der REST-APIs in CloudWatch. Behebe das Problem dann anhand der Fehlermeldung, die du erhältst.

Problembehandlung bei „There was an internal error while executing your request“

Du erhältst die folgende Fehlermeldung:

„Error: Execution failed due to configuration error: There was an internal error while executing your request“

Überprüfe die folgenden Konfigurationen, um dieses Problem zu beheben:

  • Der VPC-Link-Load Balancer ist vorhanden und wurde nicht gelöscht.
  • Der VPC-Link befindet sich im Status Verfügbar. Wenn sich der VPC-Link im Status Fehlgeschlagen befindet, musst du einen neuen VPC-Link erstellen und den Link deiner API zuordnen.
    Hinweis: Stelle die API bereit, nachdem du die Integrationsanfrage geändert hast.
  • Die VPC-Link-Endpunktverbindung, die deinem Ziel-Network Load Balancer zugeordnet ist, befindet sich im Status Verfügbar.
  • Du hast die regionsspezifische API Gateway-Konto-ID für AWS unter Prinzipale zulassen aufgeführt.
  • Eine Endpunktverbindung vom API Gateway-Konto in den Endpunktverbindungen des Endpunkt-Serivces befindet sich im Status „Verfügbar“.
  • Wenn API Gateway die VPC-ID mit einer Stufenvariablen referenziert, stelle sicher, dass die VPC-Link-ID korrekt ist.
  • Der VPC-Link-Load Balancer überwacht den HTTP/HTTPS-Port, für den du die Anfrage konfiguriert hast. Stelle sicher, dass du die Listener für den richtigen Port konfiguriert hast und dass die Netzwerk-ACLs die Anfrage nicht blockieren.
  • Die Zielgruppe akzeptiert die Anfrage. 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 mit dem Statuscode „HTTP 500“ zurückgibt, kann es vorkommen, dass die Verbindung TCP-Total-Number-of-Reset (RST)-Pakete empfängt. Der Backend-Server muss laufen. Außerdem muss ein Dienst auf dem Backend-Ziel des Zielports ausgeführt werden. Stelle sicher, dass das Backend-Ziel den Zielport überwacht.
  • Du hast die Regeln für eingehenden Datenverkehr für AWS PrivateLink deaktiviert. Die Option Eingehende Regeln für PrivateLink-Datenverkehr erzwingen wendet alle eingehenden und ausgehenden Sicherheitsgruppenregeln auf den Datenverkehr vom VPC-Link an. Wenn du die Sicherheitsgruppe nicht so konfigurierst, dass sie Datenverkehr von der VPC-Verbindung zulässt, blockiert die Sicherheitsgruppe möglicherweise den API Gateway-Verkehr.

Problembehandlung bei „Host name 'domain.com.com' does not match the certificate subject provided by the peer“

Du erhältst die folgende Fehlermeldung:

„Error: Execution failed due to configuration error: Host name 'domain.com.com' does not match the certificate subject provided by the peer (CN=myinstance.com)“

Stelle sicher, dass der Domain-Name des Endpunkts mit dem Zertifikat übereinstimmt, welches das TLS-aktivierte Ziel des Load Balancers zurückgibt. Die Liste der unterstützten Zertifizierungsstellenanbieter muss den Zertifikaten vertrauen, die du auf der Ziel-Instance konfigurierst.

Problembehandlung bei „PKIX path building failed:...unable to find valid certification path to requested target“

Du erhältst die folgende Fehlermeldung:

„Error: Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target“

Dieser Fehler tritt auf, wenn der REST-API-Dienst ein Zertifikat kennzeichnet, das die Integration als ungültig zurückgibt. Selbst wenn du in der Eigenschaft TlsConfig der Integration insecureSkipVerification auf true setzt, führt API Gateway eine grundlegende Zertifikatsvalidierung durch.

API Gateway überprüft die folgenden Informationen:

  • Das Ablaufdatum des Zertifikats
  • Der Hostname
  • Das Vorhandensein einer Root-Zertifizierungsstelle (CA)
    Hinweis: Die Integration muss die komplette Zertifikatskette enthalten und zurückgeben, damit API Gateway die Vertrauenskette verifizieren und eine sichere Verbindung herstellen kann. Die komplette Kette umfasst alle Zwischenzertifikate vom Server-Zertifikat bis zum Root-CA-Zertifikat. Außerdem muss die Root-CA keyUsage mit keyCertSign und basicConstraints mit CA:TRUE enthalten. Weitere Informationen findest du unter Objekt x-amazon-apigateway-integration.tlsConfig.

Problembehandlung bei „Cannot verify ECDH ServerKeyExchange signature“

Du erhältst die folgende Fehlermeldung:

„Error: Execution failed due to configuration error: Cannot verify ECDH ServerKeyExchange signature“

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üfe den Inhalt der Dateien, die du für deine konfigurierten CAs, Zertifikate und Schlüssel verwendet hast.

Problembehandlung bei „Execution failed due to an internal error“

Du erhältst die folgende Fehlermeldung:

„Error: Execution failed due to an internal error“

Dieser Fehler tritt auf, wenn API Gateway über den VPC-Link keine Verbindung zum Load Balancer herstellt, weil das Ziel auf dem Load Balancer zurückgesetzt wird. Um dieses Problem zu beheben, lege für das Ziel einen längeren Timeout fest als den Standard-Timeout des Load Balancers von 350 Sekunden.

Problembehandlung bei „Execution failed due to a VPC link error“

Du erhältst die folgende Fehlermeldung:

„Error: Execution failed due to a VPC link error“

API Gateway hat viele Abhängigkeiten. Möglicherweise werden Fehler angezeigt, wenn eine der Abhängigkeiten vorübergehende Verbindungsfehler aufweist. Bei Fehlern mit niedriger Frequenz empfiehlt es sich, Wiederholungsversuche mit exponentiellem Backoff zu implementieren. Wenn die Häufigkeit von Fehlern hoch ist, wende dich an den AWS Support. Stelle sicher, dass du die API Gateway-Ausführungsprotokolle bereitstellst, die die Fehler anzeigen.

Problembehandlung bei „Execution failed due to configuration error: Not a valid protocol version“

Du erhältst die folgende Fehlermeldung:

„Error: Execution failed due to configuration error: Not a valid protocol version“

Dieser Fehler tritt auf, wenn die Integration mit einer HTTP-Antwort antwortet, die nicht gültig ist und nicht der HTTP-Spezifikation entspricht. Das integrierte Backend sendet möglicherweise Daten an API Gateway zurück, die nicht gültig sind.

Gehe wie folgt vor, um diesen Fehler zu beheben:

  • Reproduziere die Anfrage, die du von API Gateway gestellt hast. Um den Dienstendpunkt zu testen, den API Gateway verwendet, erstelle einen VPC-Endpunkt, der mit der Dienstendpunkt-ID verknüpft ist. Du kannst auch Paketerfassungen ausführen, um die Antwort zu überprüfen, die das integrierte Backend zurückgibt.
  • Um eine doppelte Verschlüsselung zu vermeiden, ändere das Load Balancer-Protokoll je nach Reaktion der Ziele auf TLS oder TCP.
  • Stelle sicher, dass insecureSkipVerification in der Eigenschaft TlsConfig der Integration auf true gesetzt ist.

Fehler und Probleme überwachen und erkennen

Verwende die folgenden Tools, um festzustellen, ob es sich um ein vorübergehendes Problem handelt oder ob anhaltende Konfigurationsprobleme vorliegen:

  • Überwache die 5XXError- and IntegrationLatency-API Gateway-Metriken in CloudWatch, um Muster zu erkennen.
  • Aktiviere AWS X-Ray-Verfolgung, um die Anforderungspfade vom API Gateway zum VPC-Link, vom VPC-Link zum Network Load Balancer und vom Network Load Balancer zum Backend zu überwachen.

Ähnliche Informationen

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

Überwachung der Ausführung der REST-API mit Amazon-CloudWatch-Metriken

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