Probleme mit dem Antwort-Streaming in API Gateway beheben - Amazon API Gateway

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.

Probleme mit dem Antwort-Streaming in API Gateway beheben

Die folgenden Anleitungen zur Fehlerbehebung können Ihnen helfen, Probleme mit Ihren Benutzern zu lösen APIs , die Antwort-Streaming verwenden.

Allgemeine Problembehebung

Sie können den Test-Tab TestInvokeMethododer den Test-Tab der Konsole verwenden, um Ihre Stream-Antwort zu testen. Die folgenden Überlegungen könnten sich auf Ihre Verwendung von Test Invoke für das Antwort-Streaming auswirken:

  • Wenn Sie Ihre Methode testen, puffert API Gateway Ihre gestreamte Antwort-Payload. Sobald eine der folgenden Bedingungen erfüllt ist, gibt API Gateway eine einmalige Antwort zurück, die die gepufferte Nutzlast enthält:

    • Die Anfrage ist abgeschlossen

    • 35 Sekunden sind vergangen

    • Mehr als 1 MB Antwort-Nutzdaten wurden gepuffert

  • Wenn mehr als 35 Sekunden vergehen, bis Ihre Methode einen HTTP-Antwortstatus und alle Header zurückgibt, ist der zurückgegebene Antwortstatus 0. TestInvokeMethod

  • API Gateway erstellt keine Ausführungsprotokolle.

Nachdem Sie Ihre API bereitgestellt haben, können Sie Ihre Stream-Antwort mit einem curl-Befehl testen. Wir empfehlen, dass Sie die -i Option verwenden, um Protokollantwort-Header in die Ausgabe aufzunehmen. Verwenden Sie die Option curl, um die Antwortdaten so zu sehen, wie sie ankommen --no-buffer

Behebung von cURL-Fehlern

Wenn Sie eine Integration testen und der Fehler angezeigt wird, stellen Sie sichercurl: (18) transfer closed with outstanding read data remaining, dass das Timeout Ihrer Integration lang genug ist. Wenn Sie eine Lambda-Funktion verwenden, müssen Sie das Antwort-Timeout der Lambda-Funktion aktualisieren. Weitere Informationen finden Sie unter Lambda-Funktions-Timeout konfigurieren.

Problembehandlung mithilfe der Zugriffsprotokollierung

Sie können Zugriffsprotokolle für Ihre REST-API-Phase verwenden, um Ihren Antwortstream zu protokollieren und Fehler zu beheben. Zusätzlich zu den vorhandenen Variablen können Sie die folgenden Zugriffsprotokollvariablen verwenden:

$context.integration.responseTransferMode

Der Antwortübertragungsmodus Ihrer Integration. Dies kann entweder BUFFERED oder STREAMEDsein.

$context.integration.timeToAllHeaders

Die Zeit zwischen dem Zeitpunkt, zu dem API Gateway die Integrationsverbindung herstellt, und dem Empfang aller Integrationsantwort-Header vom Client.

$context.integration.timeToFirstContent

Die Zeit zwischen dem Zeitpunkt, zu dem API Gateway die Integrationsverbindung herstellt, und dem Empfang der ersten Inhaltsbytes.

$context.integration.latency oder $context.integrationLatency

Der Zeitpunkt, zu dem API Gateway die Integrationsverbindung herstellt, bis der Integrationsantwortstream abgeschlossen ist.

Die folgende Abbildung zeigt, wie diese Zugriffsprotokollvariablen verschiedene Komponenten eines Antwortstreams darstellen.

Zugriffs-Log-Variablen für das Antwort-Streaming in API Gateway

Weitere Informationen zu Zugriffsprotokollen finden Sie unter Richten Sie die CloudWatch Protokollierung für REST APIs in API Gateway ein. Sie können X-Ray auch verwenden, um Ihren Antwortstream zu überwachen. Weitere Informationen finden Sie unter Benutzeranforderungen für Ablaufverfolgung an REST-APIs mithilfe von X-Ray in API Gateway.