

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création de fonctions Lambda dans Node.js avec esbuild AWS SAM
<a name="serverless-sam-cli-using-build-typescript"></a>

Pour créer et empaqueter AWS Lambda les fonctions Node.js, vous pouvez les utiliser AWS SAMCLI avec le JavaScript bundler esbuild. Le bundler esbuild prend en charge les fonctions Lambda que vous écrivez. TypeScript

Pour créer une fonction Lambda Node.js avec esbuild, ajoutez un objet `Metadata` à votre `AWS:Serverless::Function` ressource et spécifiez `esbuild` pour `BuildMethod`. Lorsque vous exécutez la **sam build** commande, AWS SAM utilise esbuild pour regrouper le code de votre fonction Lambda.

## Propriétés de métadonnées
<a name="serverless-sam-cli-using-build-typescript-metadata"></a>

L'objet `Metadata` prend en charge les propriétés suivantes pour esbuild.

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

Spécifie le bundler de votre application. La seule valeur prise en charge est `esbuild`.

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

Spécifie les propriétés de création du code de votre fonction Lambda.

L'objet `BuildProperties` prend en charge les propriétés suivantes pour esbuild. Toutes les propriétés sont facultatives. Par défaut, AWS SAM utilise votre gestionnaire de fonctions Lambda comme point d'entrée.

**EntryPoints**  
Spécifie les points d'entrée de votre application.

**Externe**  
Spécifie la liste des packages à omettre de la création. Pour plus d'informations, veuillez consulter la section [Externe](https://esbuild.github.io/api/#external) sur le *site Web esbuild* (langue française non garantie).

**Format**  
Spécifie le format de sortie des JavaScript fichiers générés dans votre application. Pour plus d'informations, consultez la section [Format](https://esbuild.github.io/api/#format) du *site Web esbuild*.

**Chargeur**  
Spécifie la liste des configurations de chargement des données pour un type de fichier donné.

**MainFields**  
Spécifie les champs `package.json` à essayer d'importer lors de la résolution d'un package. La valeur par défaut est `main,module`.

**Réduire**  
Spécifie s'il faut réduire le code de sortie groupé. La valeur par défaut est `true`.

**OutExtension**  
Personnalisez l'extension des fichiers générés par esbuild. Pour plus d'informations, veuillez consulter [Out extension](https://esbuild.github.io/api/#out-extension) sur le *site Web esbuild*.

**Carte source**  
Spécifie si le bundler produit un fichier de carte source. La valeur par défaut est `false`.  
Lorsqu'il a la valeur `true`, `NODE_OPTIONS: --enable-source-maps` est ajouté aux variables d'environnement de la fonction Lambda, et une carte source est générée et incluse dans la fonction.  
Sinon, lorsque `NODE_OPTIONS: --enable-source-maps` est inclus dans les variables d'environnement de la fonction, `Sourcemap` est automatiquement défini sur `true`.  
En cas de conflit, `Sourcemap: false` a la priorité sur `NODE_OPTIONS: --enable-source-maps`.  
Par défaut, Lambda chiffre toutes les variables d'environnement au repos avec AWS Key Management Service (AWS KMS). Lorsque vous utilisez des cartes sources, pour que le déploiement réussisse, le rôle d'exécution de votre fonction doit avoir l'autorisation d'effectuer l'action `kms:Encrypt`.

**SourcesContent**  
Indique s'il faut inclure votre code source dans votre fichier de carte source. Configurez cette propriété lorsque `Sourcemap` est définie sur `'true'`.  
+ Spécifiez `SourcesContent: 'true'` pour inclure tout le code source.
+ Spécifiez `SourcesContent: 'false'` pour exclure tout le code source. Cela permet de réduire la taille des fichiers de cartes sources, ce qui est utile en production en réduisant les temps de démarrage. Cependant, le code source ne sera pas disponible dans le débogueur.
La valeur par défaut est `SourcesContent: true`.  
Pour plus d'informations, consultez la section [Contenu des sources](https://esbuild.github.io/api/#sources-content) du *site web esbuild*.

**Cible**  
Spécifie la ECMAScript version cible. La valeur par défaut est `es2020`.

## TypeScript Exemple de fonction Lambda
<a name="serverless-sam-cli-using-build-typescript-example"></a>

L'exemple d'extrait de AWS SAM modèle suivant utilise esbuild pour créer une fonction Lambda Node.js à partir du code dans. 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>"
```