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

Lambda-Funktionen von Node.js mit esbuild erstellen

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

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

Eigenschaften von Metadaten

Das Metadata Objekt 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 BuildProperties Objekt unterstützt die folgenden Eigenschaften für esbuild. Alle Eigenschaften sind optional. AWS SAM Verwendet standardmäßig Ihren Lambda-Funktionshandler für den Einstiegspunkt.

EntryPoints

Gibt Einstiegspunkte für Ihre Anwendung an.

Extern

Gibt die Liste der Pakete an, die beim Build weggelassen werden sollen. Weitere Informationen finden Sie auf der esbuildWebsite unter Extern.

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.

Verkleinern

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.

Quellenkarte

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

Wenn auf gesetzttrue, NODE_OPTIONS: --enable-source-maps wird es an die Umgebungsvariablen der Lambda-Funktion angehängt, und eine Quellenzuordnung 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 gesetzt. true

Im Konfliktfall hat Sourcemap: false dies Vorrang vor. NODE_OPTIONS: --enable-source-maps

Anmerkung

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

SourcesContent

Gibt an, ob der Quellcode in die Quellzuordnungsdatei aufgenommen werden soll. Konfigurieren Sie diese Eigenschaft, wenn sie auf gesetzt Sourcemap ist'true'.

  • Geben Sie SourcesContent: 'true' an, dass der gesamte Quellcode eingeschlossen werden soll.

  • Geben Sie SourcesContent: 'false' an, dass der gesamte Quellcode ausgeschlossen werden soll. Dies führt zu kleineren Quellzuordnungsdateien, was in der Produktion nützlich ist, da die Startzeiten reduziert werden. Der Quellcode wird jedoch nicht im Debugger verfügbar sein.

Der Standardwert ist SourcesContent: true.

Weitere Informationen finden Sie unter Quelleninhalt auf der Esbuild-Website.

Ziel

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

TypeScript Beispiel für eine Lambda-Funktion

Das folgende Beispiel für einen AWS SAM Vorlagenausschnitt verwendet esbuild, um eine Node.js Lambda-Funktion aus dem Code in zu erstellen. TypeScript hello-world/app.ts

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.handler Runtime: nodejs20.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>"