Erstellen von Node.js-Lambda-Funktionen mit esbuild - AWS Serverless Application Model

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

Um Node.js- AWS Lambda Funktionen zu erstellen und zu verpacken, können Sie mit AWS SAMCLI dem esbuild- JavaScript Bundler verwenden. Der esbuild-Bundler unterstützt Lambda-Funktionen, die Sie in schreiben TypeScript.

Um eine Node.js-Lambda-Funktion mit esbuild zu erstellen, fügen Sie Ihrer AWS:Serverless::Function Ressource ein Metadata Objekt hinzu und geben Sie esbuild für die anBuildMethod. Wenn Sie den sam build Befehl ausführen, AWS SAM verwendet esbuild, um Ihren Lambda-Funktionscode zu bündeln.

Metadateneigenschaften

Das -MetadataObjekt unterstützt die folgenden Eigenschaften für esbuild.

BuildMethod

Gibt den Bundler für Ihre Anwendung an. Der einzige unterstützte Wert ist esbuild.

BuildProperties

Gibt die Build-Eigenschaften für Ihren Lambda-Funktionscode an.

Das -BuildPropertiesObjekt unterstützt die folgenden Eigenschaften für esbuild. Alle Eigenschaften sind optional. Standardmäßig AWS SAM verwendet Ihren Lambda-Funktionshandler als Eintrittspunkt.

EntryPoints

Gibt Einstiegspunkte für Ihre Anwendung an.

Extern

Gibt die Liste der Pakete an, die aus dem Build weggelassen werden sollen. Weitere Informationen finden Sie unter Extern auf der esbuild Website .

Format

Gibt das Ausgabeformat der generierten JavaScript Dateien in Ihrer Anwendung an. Weitere Informationen finden Sie unter Format auf der esbuild-Website.

Loader

Gibt die Liste der Konfigurationen zum Laden von Daten für einen bestimmten Dateityp an.

MainFields

Gibt an, welche package.json Felder beim Auflösen eines Pakets importiert werden sollen. Der Standardwert ist main,module.

Minifizieren

Gibt an, ob der gebündelte Ausgabecode minimiert werden soll. Der Standardwert ist true.

OutExtension

Passen Sie die Dateierweiterung der Dateien an, die esbuild generiert. Weitere Informationen finden Sie unter Out-Erweiterung auf der esbuild-Website.

Sourcemap

Gibt an, ob der Bundler eine Quellkartendatei erzeugt. Der Standardwert ist false.

Wenn diese Option auf festgelegt isttrue, NODE_OPTIONS: --enable-source-maps wird an die Umgebungsvariablen der Lambda-Funktion angehängt und eine Quellzuordnung wird generiert und in die Funktion aufgenommen.

Alternativ NODE_OPTIONS: --enable-source-maps wird , wenn in den Umgebungsvariablen der Funktion enthalten Sourcemap ist, automatisch auf gesetzttrue.

Bei Konflikten Sourcemap: false hat Vorrang vor NODE_OPTIONS: --enable-source-maps.

Anmerkung

Standardmäßig verschlüsselt Lambda alle Umgebungsvariablen im Ruhezustand mit AWS Key Management Service (AWS KMS). Wenn Sie Quellkarten verwenden, muss die Ausführungsrolle Ihrer Funktion über die Berechtigung zum Ausführen der kms:Encrypt Aktion verfügen, damit die Bereitstellung erfolgreich ist.

SourcesContent

Gibt an, ob Ihr Quellcode in Ihre Quellkartendatei aufgenommen werden soll. Konfigurieren Sie diese Eigenschaft, wenn auf gesetzt Sourcemap ist'true'.

  • Geben Sie anSourcesContent: 'true', um den gesamten Quellcode einzuschließen.

  • Geben Sie anSourcesContent: 'false', um den gesamten Quellcode auszuschließen. Dies führt zu kleineren Quellkarten-Dateigrößen, was in der Produktion nützlich ist, indem die Startzeiten reduziert werden. Quellcode ist jedoch nicht im Debugger verfügbar.

Der Standardwert ist SourcesContent: true.

Weitere Informationen finden Sie unter Quellinhalte auf der esbuild-Website.

Ziel

Gibt die ECMAScript-Zielversion an. Der Standardwert ist es2020.

TypeScript Beispiel für eine Lambda-Funktion

Der folgende Beispiel- AWS SAM Vorlagenausschnitt verwendet esbuild, um eine Node.js-Lambda-Funktion aus dem TypeScript Code in zu erstellenhello-world/app.ts.

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.handler Runtime: nodejs14.x Architectures: - x86_64 Events: HelloWorld: Type: Api Properties: Path: /hello Method: get Environment: Variables: NODE_OPTIONS: --enable-source-maps Metadata: BuildMethod: esbuild BuildProperties: Format: esm Minify: false OutExtension: - .js=.mjs Target: "es2020" Sourcemap: true EntryPoints: - app.ts External: - "<package-to-exclude>"