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 |
|
Amazon Linux 2023 |
30 avril 2027 |
1 juin 2027 |
1 juillet 2027 |
|
Node.js 20 |
|
Amazon Linux 2023 |
30 avril 2026 |
1 juin 2026 |
1 juillet 2026 |
Rubriques
Configuration d’un environnement de développement TypeScript
Déployez le code TypeScript transpilé dans Lambda à l’aide d’archives de fichiers .zip
Déployez le code TypeScript transpilé dans Lambda avec des images du conteneur
Utilisation de l’objet de contexte Lambda pour récupérer les informations de la fonction TypeScript
Journalisation et surveillance des fonctions Lambda TypeScript
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 esbuildtsc) 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écuteztsc -noEmitou ajoutez un paramètre"noEmit"dans votre fichier tsconfig.json comme illustré dans l’exemple suivant. Cela permet de configurertscpour 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
-
Sources d’événements AWS courantes, comme :
-
APIGatewayProxyEvent: pour les intégrations de proxy Amazon API Gateway -
SNSEvent: pour les notifications Amazon Simple Notification Service -
SQSEvent: pour les messages Amazon Simple Queue Service -
S3Event: pour les événements de déclencheur S3 -
DynamoDBStreamEvent: pour Amazon DynamoDB Streams
-
-
L’objet Contexte Lambda
-
Le modèle du gestionnaire de rappels
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
Note
Vous n’avez pas besoin de @types/aws-lambda