Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Stellen Sie transpilierten TypeScript Code in Lambda mit ZIP-Dateiarchiven bereit

Fokusmodus
Stellen Sie transpilierten TypeScript Code in Lambda mit ZIP-Dateiarchiven bereit - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bevor Sie TypeScript Code bereitstellen können AWS Lambda, müssen Sie ihn transpilieren in. JavaScript Auf dieser Seite werden drei Möglichkeiten zum Erstellen und Bereitstellen von TypeScript Code für Lambda mit ZIP-Dateiarchiven beschrieben:

AWS SAM und AWS CDK vereinfachen das Erstellen und Bereitstellen von TypeScript Funktionen. Die AWS SAM Vorlagenspezifikation bietet eine einfache und übersichtliche Syntax zur Beschreibung der Lambda-Funktionen APIs, Berechtigungen, Konfigurationen und Ereignisse, aus denen Ihre serverlose Anwendung besteht. Über das AWS CDK Sie können zuverlässige, skalierbare und kostengünstige Anwendungen in der Cloud mit der beträchtlichen Ausdruckskraft einer Programmiersprache erstellen. Das AWS CDK richtet sich an mäßig bis sehr erfahrene Benutzer. AWS AWS CDK Sowohl der als auch der AWS SAM verwenden Esbuild, um Code zu transpilieren TypeScript . JavaScript

Verwenden AWS SAM , um TypeScript Code für Lambda bereitzustellen

Gehen Sie wie folgt vor, um eine Hello TypeScript World-Beispielanwendung herunterzuladen, zu erstellen und bereitzustellen AWS SAM. Diese Anwendung implementiert ein grundlegendes API-Backend. Es besteht aus einem Amazon-API-Gateway-Endpunkt und einer Lambda-Funktion. Wenn Sie eine GET-Anforderung an den API-Gateway-Endpunkt senden, wird die Lambda-Funktion aufgerufen. Die Funktion gibt eine hello world-Nachricht zurück.

Anmerkung

AWS SAM verwendet esbuild, um Lambda-Funktionen von Node.js aus TypeScript Code zu erstellen. Die Esbuild-Unterstützung befindet sich derzeit in der öffentlichen Vorschauversion. Während der öffentlichen Vorschau kann der esbuild-Support Änderungen unterliegen, die nicht mehr rückwärtskompatibel sind.

Voraussetzungen

Zur Durchführung der Schritte in diesem Abschnitt benötigen Sie Folgendes:

Stellen Sie eine Beispielanwendung AWS SAM bereit
  1. Initialisieren Sie die Anwendung mithilfe der Hello TypeScript World-Vorlage.

    sam init --app-template hello-world-typescript --name sam-app --package-type Zip --runtime nodejs18.x
  2. (Optional) Die Beispielanwendung enthält Konfigurationen für häufig verwendete Tools, z. B. ESLlintfür Code-Linting und Jest für Komponententests. So führen Sie Lint- und Testbefehle aus:

    cd sam-app/hello-world npm install npm run lint npm run test
  3. Entwickeln Sie die App.

    cd sam-app sam build
  4. Stellen Sie die Anwendung bereit.

    sam deploy --guided
  5. Folgen Sie den Anweisungen auf dem Bildschirm. Um die im interaktiven Erlebnis bereitgestellten Standardoptionen zu akzeptieren, antworten Sie mit Enter.

  6. Die Ausgabe zeigt den Endpunkt für die REST-API. Öffnen Sie den Endpunkt in einem Browser, um die Funktion zu testen. Folgende Antwort sollte angezeigt werden:

    {"message":"hello world"}
  7. Dies ist ein öffentlicher API-Endpunkt, der über das Internet zugänglich ist. Es wird empfohlen, dass Sie den Endpunkt nach dem Testen löschen.

    sam delete

Verwenden von AWS CDK , um TypeScript Code für Lambda bereitzustellen

Gehen Sie wie folgt vor, um eine TypeScript Beispielanwendung mit dem zu erstellen und bereitzustellen AWS CDK. Diese Anwendung implementiert ein grundlegendes API-Backend. Es besteht aus einem API-Gateway-Endpunkt und einer Lambda-Funktion. Wenn Sie eine GET-Anforderung an den API-Gateway-Endpunkt senden, wird die Lambda-Funktion aufgerufen. Die Funktion gibt eine hello world-Nachricht zurück.

Voraussetzungen

Zur Durchführung der Schritte in diesem Abschnitt benötigen Sie Folgendes:

Stellen Sie eine AWS CDK Beispielanwendung bereit
  1. Erstellen Sie ein Projektverzeichnis für Ihre neue Anwendung.

    mkdir hello-world cd hello-world
  2. Initialisieren Sie die App.

    cdk init app --language typescript
  3. Fügen Sie das @types/aws-lambda-Paket als Entwicklungsabhängigkeit hinzu. Dieses Paket enthält die Typdefinitionen für Lambda.

    npm install -D @types/aws-lambda
  4. Öffnen Sie das lib-Verzeichnis. Sie sollten eine Datei mit dem Namen „hello-world-stack.ts“ sehen. Erstellen Sie neue zwei neue Dateien in diesem Verzeichnis: hello-world.function.ts und hello-world.ts.

  5. Öffnen Sie hello-world.function.ts und fügen Sie den folgenden Code in die Datei ein. Dies ist der Code für die Lambda-Funktion.

    Anmerkung

    Die import-Anweisung importiert die Typdefinitionen aus @types/aws-lambda. 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 Repository. DefinitelyTyped GitHub

    import { Context, APIGatewayProxyResult, APIGatewayEvent } from 'aws-lambda'; export const handler = async (event: APIGatewayEvent, context: Context): Promise<APIGatewayProxyResult> => { console.log(`Event: ${JSON.stringify(event, null, 2)}`); console.log(`Context: ${JSON.stringify(context, null, 2)}`); return { statusCode: 200, body: JSON.stringify({ message: 'hello world', }), }; };
  6. Öffnen Sie hello-world.ts und fügen Sie den folgenden Code in die Datei ein. Dies enthält das NodejsFunction Konstrukt, das die Lambda-Funktion erstellt, und das LambdaRestApi Konstrukt, das die REST-API erstellt.

    import { Construct } from 'constructs'; import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs'; import { LambdaRestApi } from 'aws-cdk-lib/aws-apigateway'; export class HelloWorld extends Construct { constructor(scope: Construct, id: string) { super(scope, id); const helloFunction = new NodejsFunction(this, 'function'); new LambdaRestApi(this, 'apigw', { handler: helloFunction, }); } }

    Das NodejsFunction-Konstrukt geht standardmäßig von folgendem aus:

    • Ihr Funktions-Handler heißt handler.

    • Die .ts-Datei, die den Funktionscode enthält (hello-world.function.ts), befindet sich im selben Verzeichnis wie die .ts-Datei, die das Konstrukt (hello-world.ts) enthält. Das Konstrukt verwendet die ID des Konstrukts („hello-world“) und den Namen der Lambda-Handler-Datei („function“), um den Funktionscode zu finden. Wenn sich Ihr Funktionscode beispielsweise in einer Datei namens hello-world.my-function.ts befindet, muss die Datei hello-world.ts wie folgt auf den Funktionscode verweisen:

      const helloFunction = new NodejsFunction(this, 'my-function');

    Sie können dieses Verhalten ändern und andere esbuild-Parameter konfigurieren. Weitere Informationen finden Sie unter Konfiguration von esbuild in der AWS CDK API-Referenz.

  7. Öffnen Sie hello-world-stack.ts. Dies ist der Code, der Ihren AWS CDK -Stack definiert. Ersetzen Sie den Code mit Folgendem:

    import { Stack, StackProps } from 'aws-cdk-lib'; import { Construct } from 'constructs'; import { HelloWorld } from './hello-world'; export class HelloWorldStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new HelloWorld(this, 'hello-world'); } }
  8. Stellen Sie Ihre Anwendung aus dem Verzeichnis hello-world bereit, das Ihre cdk.json Datei enthält.

    cdk deploy
  9. Der AWS CDK erstellt und verpackt die Lambda-Funktion mithilfe von esbuild und stellt die Funktion dann für die Lambda-Laufzeit bereit. Die Ausgabe zeigt den Endpunkt für die REST-API. Öffnen Sie den Endpunkt in einem Browser, um die Funktion zu testen. Folgende Antwort sollte angezeigt werden:

    {"message":"hello world"}

    Dies ist ein öffentlicher API-Endpunkt, der über das Internet zugänglich ist. Es wird empfohlen, dass Sie den Endpunkt nach dem Testen löschen.

Verwenden von AWS CLI und esbuild zum Bereitstellen von TypeScript Code für Lambda

Das folgende Beispiel zeigt, wie TypeScript Code mithilfe von esbuild transpiliert und für Lambda bereitgestellt wird AWS CLI. esbuild erzeugt eine JavaScript Datei mit allen Abhängigkeiten. Dies ist die einzige Datei, die Sie dem ZIP-Archiv hinzufügen müssen.

Voraussetzungen

Zur Durchführung der Schritte in diesem Abschnitt benötigen Sie Folgendes:

Bereitstellen einer Beispielfunktion
  1. Erstellen Sie auf Ihrem lokalen Computer ein Projektverzeichnis für Ihre neue Funktion.

  2. Erstellen Sie ein neues Node.js Projekt mit npm oder einem Paketmanager Ihrer Wahl.

    npm init
  3. Fügen Sie die Pakete @types /aws-lambda und esbuild als Entwicklungsabhängigkeiten hinzu. Das @types/aws-lambda-Paket enthält die Typdefinitionen für Lambda.

    npm install -D @types/aws-lambda esbuild
  4. Erstellen Sie eine neue Datei mit dem Namen index.ts. Fügen Sie den folgenden Code zur Datei hinzu. Dies ist der Code für die Lambda-Funktion. Die Funktion gibt eine hello world-Nachricht zurück. Die Funktion erstellt keine API-Gateway-Ressourcen.

    Anmerkung

    Die import-Anweisung importiert die Typdefinitionen aus @types/aws-lambda. 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 Repository. DefinitelyTyped GitHub

    import { Context, APIGatewayProxyResult, APIGatewayEvent } from 'aws-lambda'; export const handler = async (event: APIGatewayEvent, context: Context): Promise<APIGatewayProxyResult> => { console.log(`Event: ${JSON.stringify(event, null, 2)}`); console.log(`Context: ${JSON.stringify(context, null, 2)}`); return { statusCode: 200, body: JSON.stringify({ message: 'hello world', }), }; };
  5. Hinzufügen eines Entwicklungs-Skripts zur package.json-Datei. Dies konfiguriert esbuild so, dass das ZIP-Bereitstellungspaket automatisch erstellt wird. Weitere Informationen finden Sie unter Entwicklungs-Skripte in der esbuild-Dokumentation.

    Linux and MacOS
    "scripts": { "prebuild": "rm -rf dist", "build": "esbuild index.ts --bundle --minify --sourcemap --platform=node --target=es2020 --outfile=dist/index.js", "postbuild": "cd dist && zip -r index.zip index.js*" },
    Windows

    In diesem Beispiel verwendet der "postbuild" Befehl das 7zip-Hilfsprogramm, um Ihre ZIP-Datei zu erstellen. Verwenden Sie Ihr bevorzugtes Windows-ZIP-Hilfsprogramm und ändern Sie den Befehl nach Bedarf.

    "scripts": { "prebuild": "del /q dist", "build": "esbuild index.ts --bundle --minify --sourcemap --platform=node --target=es2020 --outfile=dist/index.js", "postbuild": "cd dist && 7z a -tzip index.zip index.js*" },
    "scripts": { "prebuild": "rm -rf dist", "build": "esbuild index.ts --bundle --minify --sourcemap --platform=node --target=es2020 --outfile=dist/index.js", "postbuild": "cd dist && zip -r index.zip index.js*" },
  6. Erstellen Sie das Paket.

    npm run build
  7. Erstellen Sie eine Lambda-Funktion mit dem ZIP-Bereitstellungspaket. Ersetzen Sie den markierten Text durch den Amazon-Ressourcennamen (ARN) Ihrer Ausführungsrolle.

    aws lambda create-function --function-name hello-world --runtime "nodejs18.x" --role arn:aws:iam::123456789012:role/lambda-ex --zip-file "fileb://dist/index.zip" --handler index.handler
  8. Führen Sie ein Testereignis aus, um zu bestätigen, dass die Funktion die folgende Antwort zurückgibt. Wenn Sie diese Funktion mit API Gateway aufrufen möchten, Erstellen und Konfigurieren Sie eine REST-API.

    { "statusCode": 200, "body": "{\"message\":\"hello world\"}" }
DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.