View a markdown version of this page

Erstellen von Lambda-Eventfunktionen mit Node.js - AWS Lambda

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 Lambda-Eventfunktionen mit Node.js

Sie können rennen JavaScript codieren mit Node.js in AWS Lambda Event-Funktionen. Lambda bietet Laufzeiten zum Node.js die Ihren Code ausführen, um Ereignisse zu verarbeiten. Ihr Code wird in einer Umgebung ausgeführt, die Folgendes umfasst AWS SDK für JavaScript, mit Anmeldeinformationen von einem AWS Identity and Access Management (IAM) -Rolle, die Sie verwalten. Um mehr über die SDK-Versionen zu erfahren, die im Lieferumfang des enthalten sind Node.js Laufzeiten finden Sie unter Runtime-included SDK-Versionen.

Lambda unterstützt Folgendes Node.js Laufzeiten.

Name ID Betriebssystem Datum der Veraltung Blockfunktion erstellen Blockfunktion aktualisieren

Node.js 26

nodejs26.x

Amazon Linux 2023

Nicht geplant

Nicht geplant

Nicht geplant

Node.js 24

nodejs24.x

Amazon Linux 2023

30. April 2028

1. Juni 2028

1. Juli 2028

Node.js 22

nodejs22.x

Amazon Linux 2023

30. April 2027

29. Juli 2027

31. August 2027

Um eine zu erstellen Node.js Event-Funktion
  1. Öffnen Sie die Lambda-Konsole.

  2. Wählen Event-Funktion erstellen.

  3. Konfigurieren Sie die folgenden Einstellungen:

    • Funktionsname: Geben Sie einen Namen für die Funktion ein.

    • Laufzeit: Wählen Node.js 24.x.

  4. Wählen Event-Funktion erstellen.

Die Konsole erstellt eine Lambda-Ereignisfunktion mit einer einzigen Quelldatei namens index.mjs. Mit dem integrierten Code-Editor können Sie diese Datei bearbeiten und weitere Dateien hinzufügen. Wählen Sie im Abschnitt BEREITSTELLEN die Option Bereitstellen aus, um den Code Ihrer Funktion zu aktualisieren. Um Ihren Code auszuführen, wählen Sie anschließend im Abschnitt TESTEREIGNISSE die Option Testereignis erstellen aus.

Die index.mjs-Datei exportiert eine Funktion mit dem Namen handler, die ein Ereignisobjekt und ein Kontext-Objekt übernimmt. Dies ist die Handler-Funktion, die bei einem Aufruf der Funktion von Lambda aufgerufen wird. Das Node.js Die Funktionslaufzeit ruft Aufrufereignisse von Lambda ab und übergibt sie an den Handler. In der Konfiguration der Funktion lautet der Wert für den Handler index.handler.

Wenn Sie Ihren Funktionscode speichern, erstellt die Lambda-Konsole ein Bereitstellungspaket für das ZIP-Dateiarchiv. Wenn Sie Ihren Funktionscode außerhalb der Konsole (mit einer IDE) entwickeln, müssen Sie ein Bereitstellungspaket erstellen, um Ihren Code in die Lambda-Funktion hochzuladen.

Die Funktionslaufzeit übergibt neben dem Aufrufereignis ein Context-Objekt an den Handler. Das Context-Objekt enthält zusätzliche Informationen zum Aufruf, zur Funktion und zur Ausführungsumgebung. Weitere Informationen erhalten Sie über die Umgebungsvariablen.

Ihre Lambda-Funktion enthält eine CloudWatch Logs, Protokollgruppe. Die Funktion Runtime sendet Details zu jedem Aufruf an CloudWatch Loggt. Es leitet alle Protokolle weiter, die Ihre Funktion während des Aufrufs ausgibt. Wenn Ihre Funktion einen Fehler zurückgibt, formatiert Lambda den Fehler und gibt ihn an den Aufrufer zurück.

Runtime-included SDK-Versionen

Alle unterstützte Lambda Node.js Laufzeiten enthalten eine bestimmte Nebenversion von AWS SDK für JavaScript v3, nicht der neueste Version. Welche Nebenversion in der Laufzeit enthalten ist, hängt von der Laufzeitversion und Ihrer AWS-Region ab. Um die spezifische Version des SDK zu finden, die in der von Ihnen verwendeten Laufzeit enthalten ist, erstellen Sie eine Lambda-Ereignisfunktion mit dem folgenden Code.

Beispiel index.mjs
import packageJson from '@aws-sdk/client-s3/package.json' with { type: 'json' }; export const handler = async () => ({ version: packageJson.version });

Dies gibt eine Antwort im folgenden Format zurück:

{ "version": "3.632.0" }

Weitere Informationen finden Sie unter Verwenden Sie das SDK für JavaScript v3 in Ihrem Handler.

Verwenden von Keepalive für TCP-Verbindungen

Die Standardeinstellung Node.js HTTP/HTTPS Der Agent erstellt für jede neue Anfrage eine neue TCP-Verbindung. Um die Kosten für den Aufbau neuer Verbindungen zu vermeiden, ist Keep-Alive standardmäßig in allen aktiviert unterstützt Node.js Laufzeiten. Keep-alive kann die Anforderungszeiten für Lambda-Funktionen reduzieren, die mithilfe des SDK mehrere API-Aufrufe tätigen.

Informationen zur Deaktivierung von Keep-Alive finden Sie unter Wiederverwendung von Verbindungen mit Keep-Alive in Node.js in der AWS SDK für JavaScript 3.x Entwicklerhandbuch. Weitere Informationen zur Verwendung von Keep-Alive finden Sie unter HTTP-Keep-Alive ist in Modular standardmäßig aktiviert AWS SDK für JavaScript auf der AWS Blog mit Tools für Entwickler.

CA-Zertifikat wird geladen

Für Node.js Runtime-Versionen bis zu Node.js 18, Lambda wird automatisch geladen Amazon-specific CA-Zertifikate (Certificate Authority), um es Ihnen zu erleichtern, Funktionen zu erstellen, die mit anderen interagieren AWS-Services. Lambda enthält beispielsweise die Amazon-RDS-Zertifikate, die für die Validierung des in Ihrer Amazon-RDS-Datenbank installierten Server-Identitätszertifikats erforderlich sind. Dieses Verhalten kann sich bei Kaltstarts auf die Leistung auswirken.

Beginnend mit Node.js 20, Lambda lädt standardmäßig keine zusätzlichen CA-Zertifikate mehr. Das Node.js 20 Runtime enthält eine Zertifikatsdatei mit allen Amazon CA-Zertifikaten, die sich unter /var/runtime/ca-cert.pem. Um dasselbe Verhalten wiederherzustellen von Node.js 18 und frühere Laufzeiten stellen Sie ein NODE_EXTRA_CA_CERTS Umgebungsvariable zu /var/runtime/ca-cert.pem.

Für eine optimale Leistung empfehlen wir, nur die Zertifikate, die Sie benötigen, mit Ihrem Bereitstellungspaket zu bündeln und sie über das NODE_EXTRA_CA_CERTS Umgebungsvariable. Die Zertifikatsdatei sollte aus einem oder mehreren vertrauenswürdigen Stammzertifikaten oder Zertifikaten von Zwischenzertifizierungsstellen im PEM-Format bestehen. Fügen Sie für RDS die erforderlichen Zertifikate beispielsweise zusammen mit Ihrem Code als certificates/rds.pem hinzu. Laden Sie dann die Zertifikate, indem Sie NODE_EXTRA_CA_CERTS auf /var/task/certificates/rds.pem festlegen.

Experimentell Node.js Eigenschaften

Der Upstream Node.js Sprachversionen ermöglichen standardmäßig einige experimentelle Funktionen. Lambda deaktiviert diese Features, um die Laufzeitstabilität und eine konsistente Leistung zu gewährleisten. In der folgenden Tabelle sind die experimentellen Features aufgeführt, die Lambda deaktiviert.

Experimentelle Features Unterstützt Node.js Versionen Node.js von Lambda angewendete Flagge Lambda-Flag zum erneuten Aktivieren

Support für den Import von Modulen mithilfe von „require“ in ES-Modulen

Node.js 20, Node.js 22, Node.js 24

--no-experimental-require-module

--experimental-require-module

Support für die automatische Erkennung von ES- und CommonJS-Modulen

Node.js 22, Node.js 24

--no-experimental-detect-module

--experimental-detect-module

Um ein deaktiviertes experimentelles Feature zu aktivieren, setzen Sie das Reaktivierungs-Flag in der Umgebungsvariablen „NODE_OPTIONS“. Beispiel: Um die Unterstützung für „require“ in ES-Modulen zu aktivieren, setzen Sie „NODE_OPTIONS“ auf „--experimental-require-module“. Lambda erkennt diese Überschreibung und entfernt das entsprechende Deaktivierungs-Flag.

Wichtig

Die Verwendung experimenteller Features kann zu Instabilität und Leistungsproblemen führen. Diese Funktionen könnten in Zukunft geändert oder entfernt werden Node.js Versionen. Funktionen, die experimentelle Features nutzen, sind nicht für das Lambda Service Level Agreement (SLA) oder AWS Support qualifiziert.