Erstellen von Lambda-Funktionen mit TypeScript - AWS Lambda

Erstellen von Lambda-Funktionen mit TypeScript

Sie können die Node.js-Laufzeit verwenden, um TypeScript-Code in AWS Lambda auszuführen. Da Node.js TypeScript-Code nicht nativ ausführt, müssen Sie zuerst Ihren TypeScript-Code in JavaScript transpilieren. Verwenden Sie dann die JavaScript-Dateien, um Ihren Funktionscode in Lambda bereitzustellen. Ihr Code wird in einer Umgebung ausgeführt, der das AWS-SDK für JavaScript enthält, mit Anmeldeinformationen von einer von Ihnen verwalteten AWS Identity and Access Management (IAM)-Rolle. Weitere Informationen zu den SDK-Versionen, die in den Laufzeiten von Node.js enthalten sind, finden Sie unter SDK-Versionen, die zur Laufzeit enthalten sind.

Lambda unterstützt die folgenden Node.js-Laufzeiten.

Name ID Betriebssystem Datum der Veraltung Blockfunktion erstellen Blockfunktion aktualisieren

Node.js 22

nodejs22.x

Amazon Linux 2023

30. Apr 2027

1. Juni 2027

1. Juli 2027

Node.js 20

nodejs20.x

Amazon Linux 2023

30. Apr 2026

1. Juni 2026

1. Juli 2026

Einrichtung der TypeScript-Entwicklungsumgebung

Verwenden Sie eine lokale integrierte Entwicklungsumgebung (IDE) oder einen Texteditor, um Ihren TypeScript-Funktionscode zu schreiben. Sie können keinen TypeScript-Code auf der Lambda-Konsole erstellen.

Sie können entweder esbuild oder den TypeScript-Compiler (tsc) von Microsoft verwenden, um Ihren TypeScript-Code in JavaScript zu transpilieren. AWS Serverless Application Model (AWS SAM) und AWS Cloud Development Kit (AWS CDK) verwenden beide „esbuild“.

Wenn Sie esbuild verwenden, beachten Sie Folgendes:

  • Es gibt mehrere TypeScript-Vorbehalte.

  • Sie müssen Ihre TypeScript-Transpilations-Einstellungen so konfigurieren, dass sie der Laufzeit von Node.js entsprechen, die Sie verwenden möchten. Weitere Informationen finden Sie unter Ziel in der esbuild-Dokumentation. Ein Beispiel für eine tsconfig.json-Datei, die zeigt, wie eine bestimmte von Lambda unterstützte Node.js-Version als Ziel verwendet wird, finden Sie im TypeScript-GitHub-Repository.

  • esbuild führt keine Typ-Überprüfungen durch. Um Typen zu überprüfen, verwenden Sie den tsc-Compiler. Führen Sie tsc -noEmit aus oder fügen Sie einen "noEmit"-Parameter zu Ihrer tsconfig.json-Datei hinzu, wie im folgenden Beispiel gezeigt. Dies konfiguriert tsc, um keine JavaScript-Dateien auszugeben. Verwenden Sie nach dem Überprüfen der Typen esbuild, um die TypeScript-Dateien in JavaScript zu konvertieren.

Beispiel 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"] }

Typdefinitionen für Lambda

Das Paket @types/aws-lambda enthält Typdefinitionen für Lambda-Funktionen. Installieren Sie dieses Paket, wenn Ihre Funktion eines der folgenden Elemente verwendet:

Um die Lambda-Typdefinitionen zu Ihrer Funktion hinzuzufügen, installieren Sie @types/aws-lambda als eine Entwicklungsabhängigkeit:

npm install -D @types/aws-lambda

Importieren Sie dann die Typen aus aws-lambda:

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

Die import ... from 'aws-lambda'-Anweisung importiert die Typdefinitionen. Das aws-lambda-NPM-Paket wird nicht importiert, da es sich um ein unabhängiges Tool eines Drittanbieters handelt. Weitere Informationen finden Sie unter aws-lambda im DefinitelyTyped-GitHub-Repository.

Anmerkung

Sie benötigen @types/aws-lambda nicht, wenn Sie Ihre eigenen benutzerdefinierten Typdefinitionen verwenden. Eine Beispielfunktion, die ihren eigenen Typ für ein Ereignisobjekt definiert, finden Sie unter Beispiel für einen TypeScript-Lambda-Funktionscode.