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.
Schreiben von Antwort-Streaming-fähigen Lambda-Funktionen
Das Schreiben des Handlers für Antwort-Streaming-Funktionen unterscheidet sich von typischen Handler-Mustern. Wenn Sie Streaming-Funktionen schreiben, sollten Sie Folgendes beachten:
Umschließen Sie Ihre Funktion mit dem
awslambda.streamifyResponse()-Decorator. Das globaleawslambda-Objekt wird von der Lambda-Laufzeitumgebung Node.js bereitgestellt.Beenden Sie den Stream ordnungsgemäß, um sicherzustellen, dass die Datenverarbeitung abgeschlossen ist.
Konfigurieren einer Handler-Funktion zum Streamen von Antworten
Um der Laufzeit zu signalisieren, dass Lambda die Antworten Ihrer Funktion streamen soll, müssen Sie Ihre Funktion mit dem streamifyResponse()-Decorator wrappen. Dadurch wird die Laufzeit angewiesen, den richtigen Logikpfad für Streaming-Antworten zu verwenden, und ermöglicht es der Funktion, Antworten zu streamen.
Der streamifyResponse()-Decorator akzeptiert eine Funktion, die die folgenden Parameter akzeptiert:
event– Stellt Informationen über das Aufrufereignis der Funktions-URL bereit, z. B. die HTTP-Methode, Abfrageparameter und den Anforderungskörper.responseStream– Stellt einen schreibbaren Stream bereit.context– Stellt Methoden und Eigenschaften mit Informationen zum Aufruf, zur Funktion und zur Ausführungsumgebung bereit.
Das responseStream-Objekt ist ein Node.js writableStreampipeline()-Methode verwenden.
Anmerkung
Das globale awslambda-Objekt wird automatisch von der Lambda-Laufzeit Node.js bereitgestellt, und es ist kein Import erforderlich.
Beispiel Handler mit aktiviertem Antwort-Streaming
import { pipeline } from 'node:stream/promises'; import { Readable } from 'node:stream'; export const echo = awslambda.streamifyResponse(async (event, responseStream, _context) => { // As an example, convert event to a readable stream. const requestStream = Readable.from(Buffer.from(JSON.stringify(event))); await pipeline(requestStream, responseStream); });
Obwohl responseStream die write()-Methode bietet, in den Stream zu schreiben, empfehlen wir Ihnen, wo immer möglich, pipeline()pipeline() stellt sicher, dass der schreibbare Stream nicht von einem schneller lesbaren Stream überfordert wird.
Den Stream beenden
Stellen Sie sicher, dass Sie den Stream ordnungsgemäß beenden, bevor der Handler zurückkehrt. Die pipeline()-Methode verarbeitet dies automatisch.
Für andere Anwendungsfälle rufen Sie die responseStream.end()-Methode auf, um einen Stream ordnungsgemäß zu beenden. Diese Methode signalisiert, dass keine Daten mehr in den Stream geschrieben werden sollen. Diese Methode ist nicht erforderlich, wenn Sie mit pipeline() oder pipe() in den Stream schreiben.
Ab Node.js 24 wartet Lambda nicht mehr darauf, dass ungelöste Versprechen abgeschlossen werden, nachdem Ihr Handler zurückgekehrt ist oder der Antwortstream beendet wurde. Wenn Ihre Funktion von zusätzlichen asynchronen Vorgängen wie Timern oder Abrufen abhängt, sollten Sie sie in Ihrem Handler verwenden. await
Beispiel für das Beenden eines Streams mit Pipeline ()
import { pipeline } from 'node:stream/promises'; export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => { await pipeline(requestStream, responseStream); });
Beispiel für das Beenden eines Streams ohne Pipeline ()
export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => { responseStream.write("Hello "); responseStream.write("world "); responseStream.write("from "); responseStream.write("Lambda!"); responseStream.end(); });