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.
Bereitstellung von Lambda-Funktionen mit dem AWS CDK
Das AWS Cloud Development Kit (AWS CDK) ist ein Infrastructure-as-Code-Framework (IaC), mit dem Sie die AWS Cloud-Infrastruktur mithilfe einer Programmiersprache Ihrer Wahl definieren können. Um Ihre eigene Cloud-Infrastruktur zu definieren, schreiben Sie zunächst eine App (in einer der CDK unterstützten Sprachen), die einen oder mehrere Stacks enthält. Anschließend synthetisieren Sie es zu einer AWS CloudFormation Vorlage und stellen Ihre Ressourcen auf Ihrem bereit. AWS-Konto Folgen Sie den Schritten in diesem Thema, um eine Lambda-Funktion bereitzustellen, die ein Ereignis von einem Amazon API Gateway-Endpunkt zurückgibt.
Die AWS Construct-Bibliothek, die im Lieferumfang von enthalten istCDK, stellt Module bereit, mit denen Sie die AWS-Services bereitgestellten Ressourcen modellieren können. Für die gängigen Dienste stellt die Bibliothek kuratierte Konstrukte bereit, die intelligente Standards und bewährte Methoden bereitstellen. Sie können das Modul aws_lambda verwenden, um Ihre Funktion und die unterstützenden Ressourcen mit nur wenigen Codezeilen zu definieren.
Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen, installieren Sie das, AWS CDK indem Sie den folgenden Befehl ausführen.
npm install -g aws-cdk
Schritt 1: Richten Sie Ihr AWS CDK Projekt ein
Erstellen Sie ein Verzeichnis für Ihre neue AWS CDK App und initialisieren Sie das Projekt.
Anmerkung
Die AWS CDK Anwendungsvorlage verwendet den Namen des Projektverzeichnisses, um Namen für Quelldateien und Klassen zu generieren. In diesem Beispiel trägt das Verzeichnis den Namen hello-lambda
. Wenn Sie einen anderen Projektverzeichnisnamen verwenden, stimmt Ihre App nicht mit diesen Anweisungen überein.
AWS CDK v2 enthält stabile Konstrukte für alle AWS-Services in einem einzigen Paket, das aufgerufen wirdaws-cdk-lib
. Dieses Paket wird als Abhängigkeit installiert, wenn Sie das Projekt initialisieren. Wenn Sie mit bestimmten Programmiersprachen arbeiten, wird das Paket installiert, wenn Sie das Projekt zum ersten Mal erstellen.
Schritt 2: Definieren Sie den Stapel AWS CDK
Ein CDK Stack ist eine Sammlung von einem oder mehreren Konstrukten, die AWS Ressourcen definieren. Jeder CDK Stapel steht für einen AWS CloudFormation Stapel in Ihrer CDK App.
Um Ihren Stack zu definierenCDK, folgen Sie den Anweisungen für Ihre bevorzugte Programmiersprache. Dieser Stack definiert Folgendes:
-
Der logische Name der Funktion:
MyFunction
-
Der Speicherort des Funktionscodes, der in der
code
Eigenschaft angegeben ist. Weitere Informationen finden Sie unter Handlercode in der AWS Cloud Development Kit (AWS CDK) APIReferenz. -
Der REST API logische Name lautet:
HelloApi
-
Der logische Name des API Gateway-Endpunkts:
ApiGwEndpoint
Beachten Sie, dass alle CDK Stacks in diesem Tutorial die Laufzeit Node.js für die Lambda-Funktion verwenden. Sie können verschiedene Programmiersprachen für den CDK Stack und die Lambda-Funktion verwenden, um die Stärken der einzelnen Sprachen zu nutzen. Sie können beispielsweise for the CDK Stack verwenden TypeScript , um die Vorteile der statischen Typisierung für Ihren Infrastrukturcode zu nutzen. Sie können die Lambda-Funktion verwenden JavaScript , um die Flexibilität und schnelle Entwicklung einer dynamisch typisierten Sprache zu nutzen.
Schritt 3: Erstellen Sie den Lambda-Funktionscode
-
Erstellen Sie im Stammverzeichnis Ihres Projekts (
hello-lambda
) das/lib/lambda-handler
Verzeichnis für den Lambda-Funktionscode. Dieses Verzeichnis ist in dercode
Eigenschaft Ihres AWS CDK Stacks angegeben. -
Erstellen Sie ein neues Feld namens
index.js
im/lib/lambda-handler
Verzeichnis. Fügen Sie folgenden Code in die Datei ein. Die Funktion extrahiert bestimmte Eigenschaften aus der API Anfrage und gibt sie als JSON Antwort zurück.exports.handler = async (event) => { // Extract specific properties from the event object const { resource, path, httpMethod, headers, queryStringParameters, body } = event; const response = { resource, path, httpMethod, headers, queryStringParameters, body, }; return { body: JSON.stringify(response, null, 2), statusCode: 200, }; };
Schritt 4: Stellen Sie den AWS CDK Stack bereit
-
Führen Sie im Stammverzeichnis Ihres Projekts den Befehl cdk synth aus:
cdk synth
Dieser Befehl synthetisiert eine AWS CloudFormation Vorlage aus Ihrem Stack. CDK Bei der Vorlage handelt es sich um eine etwa YAML 400-zeilige Datei, die der folgenden ähnelt.
Anmerkung
Wenn Sie die folgende Fehlermeldung erhalten, stellen Sie sicher, dass Sie sich im Stammverzeichnis Ihres Projektverzeichnisses befinden.
--app is required either in command-line, in cdk.json or in ~/.cdk.json
Beispiel AWS CloudFormation Vorlage
Resources: MyFunctionServiceRole3C357FF2: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Action: sts:AssumeRole Effect: Allow Principal: Service: lambda.amazonaws.com Version: "2012-10-17" ManagedPolicyArns: - Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - :iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Metadata: aws:cdk:path: HelloLambdaStack/MyFunction/ServiceRole/Resource MyFunction1BAA52E7: Type: AWS::Lambda::Function Properties: Code: S3Bucket: Fn::Sub: cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region} S3Key: ab1111111cd32708dc4b83e81a21c296d607ff2cdef00f1d7f48338782f92l3901.zip Handler: index.handler Role: Fn::GetAtt: - MyFunctionServiceRole3C357FF2 - Arn Runtime: nodejs20.x ...
-
Führen Sie den Befehl cdk deploy aus:
cdk deploy
Warten Sie, bis Ihre Ressourcen erstellt wurden. Die endgültige Ausgabe umfasst die URL für Ihren API Gateway-Endpunkt. Beispiel:
Outputs: HelloLambdaStack.ApiGwEndpoint77F417B1 =
https://abcd1234.execute-api.us-east-1.amazonaws.com/prod/
Schritt 5: Testen Sie die Funktion
Um die Lambda-Funktion aufzurufen, kopieren Sie den API Gateway-Endpunkt und fügen Sie ihn in einen Webbrowser ein oder führen Sie einen curl
Befehl aus:
curl -s
https://abcd1234.execute-api.us-east-1.amazonaws.com/prod/
Die Antwort ist eine JSON Darstellung der ausgewählten Eigenschaften des ursprünglichen Ereignisobjekts, das Informationen über die Anfrage an den API Gateway-Endpunkt enthält. Beispiel:
{
"resource": "/",
"path": "/",
"httpMethod": "GET",
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "en-US,en;q=0.9",
"CloudFront-Forwarded-Proto": "https",
"CloudFront-Is-Desktop-Viewer": "true",
"CloudFront-Is-Mobile-Viewer": "false",
"CloudFront-Is-SmartTV-Viewer": "false",
"CloudFront-Is-Tablet-Viewer": "false",
"CloudFront-Viewer-ASN": "16509",
"CloudFront-Viewer-Country": "US",
"Host": "abcd1234.execute-api.us-east-1.amazonaws.com",
...
Schritt 6: Bereinigen Ihrer Ressourcen
Der API Gateway-Endpunkt ist öffentlich zugänglich. Um unerwartete Gebühren zu vermeiden, führen Sie den Befehl cdk destroy aus, um den Stack und alle zugehörigen Ressourcen zu löschen.
cdk destroy
Nächste Schritte
Informationen zum Schreiben von AWS CDK Apps in der Sprache Ihrer Wahl finden Sie im Folgenden: