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 |
|
Amazon Linux 2023 |
30. Apr 2027 |
1. Juni 2027 |
1. Juli 2027 |
|
Node.js 20 |
|
Amazon Linux 2023 |
30. Apr 2026 |
1. Juni 2026 |
1. Juli 2026 |
Themen
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 esbuildtsc) 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 Sietsc -noEmitaus oder fügen Sie einen"noEmit"-Parameter zu Ihrer tsconfig.json-Datei hinzu, wie im folgenden Beispiel gezeigt. Dies konfigurierttsc, 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
-
Allgemeine AWS-Ereignisquellen, wie z. B.:
-
APIGatewayProxyEvent: Für Für Proxy-Integrationen in Amazon API Gateway -
SNSEvent: Für Amazon-Simple-Notification-Service-Benachrichtigungen -
SQSEvent: Für Amazon-Simple-Queue-Service-Nachrichten -
S3Event: Für S3-Auslöserereignisse -
DynamoDBStreamEvent: Für Amazon DynamoDB Streams
-
-
Das Lambda-Kontext-Objekt
-
Das Callback-Handler-Muster
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
Anmerkung
Sie benötigen @types/aws-lambda