Création de fonctions Lambda dans Node.js avec esbuild AWS SAM - AWS Serverless Application Model

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

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

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

BuildMethod

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

BuildProperties

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 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 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 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.

Note

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 du site web esbuild.

Cible

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

TypeScript Exemple de fonction Lambda

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