

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
<a name="serverless-sam-cli-using-build-typescript"></a>

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
<a name="serverless-sam-cli-using-build-typescript-metadata"></a>

L'`Metadata`oggetto supporta le seguenti proprietà per esbuild.

### BuildMethod
<a name="serverless-sam-cli-using-build-typescript-metadata-buildmethod"></a>

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

### BuildProperties
<a name="serverless-sam-cli-using-build-typescript-metadata-buildproperties"></a>

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

L'`BuildProperties`oggetto 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](https://esbuild.github.io/api/#external) nel sito Web. esbuild*

**Formato**  
Specificate il formato di output dei JavaScript file generati nell'applicazione. Per ulteriori informazioni, consulta [Format](https://esbuild.github.io/api/#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](https://esbuild.github.io/api/#out-extension) nel sito Web di *esbuild*.

**Mappa dei sorgenti**  
Speciifica se il bundler produce un file di mappa sorgente. Il valore predefinito è `false`.  
Se impostato su`true`, `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`  
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:Encrypt`azione.

**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](https://esbuild.github.io/api/#sources-content) di esbuild.*

**Target**  
Specifica la versione di destinazione ECMAScript . Il valore predefinito è `es2020`.

## TypeScript Esempio di funzione Lambda
<a name="serverless-sam-cli-using-build-typescript-example"></a>

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>"
```