Creazione di funzioni Lambda Node.js con esbuild in AWS SAM - AWS Serverless Application Model

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di funzioni Lambda Node.js con esbuild in AWS SAM

Per creare e impacchettare AWS Lambda le funzioni Node.js, puoi usarle AWS SAMCLI con il bundler esbuild JavaScript . Il bundler esbuild supporta le funzioni Lambda in cui scrivi. TypeScript

Per creare una funzione Lambda Node.js con esbuild, aggiungi un Metadata oggetto alla tua AWS:Serverless::Function risorsa e specifica esbuild per. BuildMethod Quando esegui il sam build comando, AWS SAM usa esbuild per raggruppare il codice della funzione Lambda.

Proprietà dei metadati

L'Metadataoggetto supporta le seguenti proprietà per esbuild.

BuildMethod

Specifica il bundler per l'applicazione. L'unico valore supportato è esbuild.

BuildProperties

Specifica le proprietà di compilazione per il codice della funzione Lambda.

L'BuildPropertiesoggetto supporta le seguenti proprietà per esbuild. Tutte le proprietà sono opzionali. Per impostazione predefinita, AWS SAM utilizza il gestore di funzioni Lambda per il punto di ingresso.

EntryPoints

Specifica i punti di ingresso per l'applicazione.

Esterno

Specifica l'elenco dei pacchetti da omettere dalla compilazione. Per ulteriori informazioni, consulta External nel sito Web. esbuild

Formato

Specificate il formato di output dei JavaScript file generati nell'applicazione. Per ulteriori informazioni, consulta Format nel sito web esbuild.

Loader

Specifica l'elenco delle configurazioni per il caricamento dei dati per un determinato tipo di file.

MainFields

Speciifica quali package.json campi provare a importare durante la risoluzione di un pacchetto. Il valore predefinito è main,module.

Minimizza

Specifica se minimizzare il codice di output in bundle. Il valore predefinito è true.

OutExtension

Personalizza l'estensione dei file generati da esbuild. Per ulteriori informazioni, consulta l'estensione Out nel sito Web di esbuild.

Mappa dei sorgenti

Speciifica se il bundler produce un file di mappa sorgente. Il valore predefinito è false.

Se impostato sutrue, NODE_OPTIONS: --enable-source-maps viene aggiunto alle variabili di ambiente della funzione Lambda e viene generata e inclusa nella funzione una mappa di origine.

In alternativa, quando NODE_OPTIONS: --enable-source-maps è incluso nelle variabili di ambiente della funzione, Sourcemap viene impostato automaticamente su. true

In caso di conflitto, ha Sourcemap: false la precedenza su. NODE_OPTIONS: --enable-source-maps

Nota

Per impostazione predefinita, Lambda crittografa tutte le variabili di ambiente inattive con AWS Key Management Service ().AWS KMS Quando si utilizzano mappe di origine, affinché la distribuzione abbia esito positivo, il ruolo di esecuzione della funzione deve disporre dell'autorizzazione per eseguire l'kms:Encryptazione.

SourcesContent

Speciifica se includere il codice sorgente nel file della mappa di origine. Configura questa proprietà quando Sourcemap è impostata su. 'true'

  • SourcesContent: 'true'Specificare di includere tutto il codice sorgente.

  • SourcesContent: 'false'Specificare di escludere tutto il codice sorgente. Ciò si traduce in una riduzione delle dimensioni dei file delle mappe di origine, utili nella produzione in quanto riducono i tempi di avvio. Tuttavia, il codice sorgente non sarà disponibile nel debugger.

Il valore predefinito è SourcesContent: true.

Per ulteriori informazioni, consulta il contenuto di Sources nel sito Web di esbuild.

Target

Specifica la versione di destinazioneECMAScript. Il valore predefinito è es2020.

TypeScript Esempio di funzione Lambda

Il seguente frammento di AWS SAM modello di esempio utilizza esbuild per creare una funzione Lambda Node.js dal codice in. 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>"