Création de fonctions Lambda avec TypeScript - AWS Lambda

Création de fonctions Lambda avec TypeScript

Vous pouvez utiliser l’environnement d’exécution Node.js pour exécuter du code TypeScript dans le AWS Lambda. Étant donné que Node.js n’exécute pas le code TypeScript en mode natif, vous devez d’abord transpiler votre code TypeScript en JavaScript. Ensuite, utilisez les fichiers JavaScript pour déployer votre code de fonction sur Lambda. Votre code s’exécute dans un environnement incluant le kit SDK AWS pour JavaScript, avec les informations d’identification d’un rôle AWS Identity and Access Management (IAM) que vous gérez. Pour en savoir plus sur les versions du kit SDK incluses dans les environnements d’exécution Node.js, consultez Versions du SDK incluses dans l’environnement d’exécution.

Lambda prend en charge les environnements d’exécution Node.js suivants.

Nom Identifiant Système d’exploitation Date d’obsolescence Créer la fonction de blocage Mettre à jour la fonction de blocage

Node.js 22

nodejs22.x

Amazon Linux 2023

30 avril 2027

1 juin 2027

1 juillet 2027

Node.js 20

nodejs20.x

Amazon Linux 2023

30 avril 2026

1 juin 2026

1 juillet 2026

Configuration d’un environnement de développement TypeScript

Utilisez un environnement de développement intégré (IDE) local ou un éditeur de texte pour écrire le code de votre fonction TypeScript. Vous ne pouvez pas créer de code TypeScript sur la console Lambda.

Vous pouvez utiliser esbuild ou le compilateur TypeScript de Microsoft (tsc) pour transpiler votre code TypeScript en JavaScript. AWS Serverless Application Model (AWS SAM) et AWS Cloud Development Kit (AWS CDK) utilisent tous deux esbuild.

Tenez compte des éléments suivants lorsque vous utilisez esbuild :

  • Il existe plusieurs mises en garde TypeScript.

  • Vous devez configurer vos paramètres de transpilation de TypeScript pour qu’ils correspondent à l’environnement d’exécution Node.js que vous prévoyez d’utiliser. Pour plus d’informations, consultez Cible dans la documentation d’esbuild. Pour un exemple de fichier tsconfig.json qui montre comment cibler une version Node.js spécifique prise en charge par Lambda, reportez-vous au référentiel TypeScript GitHub.

  • esbuild n’effectue pas de vérifications du type. Pour vérifier les types, utilisez le compilateur tsc. Exécutez tsc -noEmit ou ajoutez un paramètre "noEmit" dans votre fichier tsconfig.json comme illustré dans l’exemple suivant. Cela permet de configurer tsc pour qu’il n’émette pas de fichiers JavaScript. Après avoir vérifié les types, utilisez esbuild pour convertir les fichiers TypeScript en JavaScript.

Exemple tsconfig.json
{ "compilerOptions": { "target": "es2020", "strict": true, "preserveConstEnums": true, "noEmit": true, "sourceMap": false, "module":"commonjs", "moduleResolution":"node", "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "isolatedModules": true, }, "exclude": ["node_modules", "**/*.test.ts"] }

Définitions de type pour Lambda

Le package @types/aws-lambda contient les définitions de type pour les fonctions Lambda. Installez ce package lorsque votre fonction utilise l’un des éléments suivants :

Pour ajouter les définitions de type Lambda à votre fonction, installez @types/aws-lambda en tant que dépendance de développement :

npm install -D @types/aws-lambda

Importez ensuite les types depuis aws-lambda :

import { Context, S3Event, APIGatewayProxyEvent } from 'aws-lambda'; export const handler = async (event: S3Event, context: Context) => { // Function code };

L’instruction import ... from 'aws-lambda' importe les définitions de type. Elle n’importe pas le package npm aws-lambda, qui est un outil tiers indépendant. Pour plus d’informations, voir aws-lambda dans le référentiel GitHub DefinitelyTyped.

Note

Vous n’avez pas besoin de @types/aws-lambda lorsque vous utilisez vos propres définitions de type personnalisées. Pour un exemple de fonction qui définit son propre type pour un objet d’événement, consultez Exemple de code de fonction Lambda TypeScript.