Tutorial: Erstellen einer Lambda-Funktion mit einer Funktions-URL - 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.

Tutorial: Erstellen einer Lambda-Funktion mit einer Funktions-URL

In diesem Tutorial erstellen Sie eine Lambda-Funktion, die als ZIP-Archiv mit einem öffentlichen Funktions-URL-Endpunkt definiert ist und das Produkt aus zwei Zahlen zurückgibt. Weitere Hinweise zum Konfigurieren von Funktions-URLs finden Sie unter Funktion URLs.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass Sie über Kenntnisse zu den grundlegenden Lambda-Operationen und der Lambda-Konsole verfügen. Sofern noch nicht geschehen, befolgen Sie die Anweisungen unter Erstellen einer Lambda-Funktion mit der Konsole, um Ihre erste Lambda-Funktion zu erstellen.

Um die folgenden Schritte durchzuführen, benötigen Sie die AWS Command Line Interface (AWS CLI) Version 2. Befehle und die erwartete Ausgabe werden in separaten Blöcken aufgeführt:

aws --version

Die Ausgabe sollte folgendermaßen aussehen:

aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2

Bei langen Befehlen wird ein Escape-Zeichen (\) wird verwendet, um einen Befehl über mehrere Zeilen zu teilen.

Verwenden Sie auf Linux und macOS Ihren bevorzugten Shell- und Paket-Manager.

Anmerkung

In Windows werden einige Bash-CLI-Befehle, die Sie häufig mit Lambda verwenden (z. B. zip), von den integrierten Terminals des Betriebssystems nicht unterstützt. Um eine in Windows integrierte Version von Ubuntu und Bash zu erhalten, installieren Sie das Windows-Subsystem für Linux. Die CLI-Beispielbefehle in diesem Handbuch verwenden die Linux-Formatierung. Befehle, die Inline-JSON-Dokumente enthalten, müssen neu formatiert werden, wenn Sie die Windows-CLI verwenden.

Erstellen einer Ausführungsrolle

Erstellen Sie die Ausführungsrolle die Ihrer Lambda-Funktion die Berechtigung für den Zugriff auf AWS -Ressourcen erteilt.

So erstellen Sie eine Ausführungsrolle
  1. Öffnen Sie die Seite Rollen der AWS Identity and Access Management (IAM-) Konsole.

  2. Wählen Sie Rolle erstellen aus.

  3. Wählen Sie für Vertrauenswürdigen Entitätstyp AWS Service und dann für Anwendungsfall Lambda aus.

  4. Wählen Sie Weiter aus.

  5. Geben Sie im Bereich „BerechtigungsrichtlinienAWSLambdaBasicExecutionRole in das Suchfeld ein.

  6. Aktivieren Sie das Kontrollkästchen neben der AWSLambdaBasicExecutionRole AWS verwalteten Richtlinie und wählen Sie dann Weiter aus.

  7. Geben Sie lambda-url-role den Rollennamen ein und wählen Sie dann Rolle erstellen aus.

Die AWSLambdaBasicExecutionRole Richtlinie verfügt über die Berechtigungen, die die Funktion benötigt, um Protokolle in Amazon CloudWatch Logs zu schreiben. Später im Tutorial benötigen Sie den Amazon-Ressourcennamen (ARN) der Rolle, um Ihre Lambda-Funktion zu erstellen.

So finden Sie den ARN Ihrer Ausführungsrolle
  1. Öffnen Sie die Seite Rollen der AWS Identity and Access Management (IAM-) Konsole.

  2. Wählen Sie die Rolle aus, die Sie gerade erstellt haben (lambda-url-role).

  3. Kopieren Sie im Übersichtsbereich den ARN.

Erstellen einer Lambda-Funktion mit einer Funktions-URL (ZIP-Dateiarchiv)

Erstellen Sie eine Lambda-Funktion mit einem Funktions-URL-Endpunkt mit einem ZIP-Dateiarchiv.

So erstellen Sie die Funktion
  1. Kopieren Sie das folgende Codebeispiel in eine Datei mit dem Namen index.js.

    Beispiel index.js
    exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; };
  2. Erstellen Sie ein Bereitstellungspaket.

    zip function.zip index.js
  3. Erstellen Sie eine Lambda-Funktion mit dem Befehl create-function. Achten Sie darauf, den Rollen-ARN durch den ARN Ihrer eigenen Ausführungsrolle zu ersetzen, den Sie zuvor im Tutorial kopiert haben.

    aws lambda create-function \ --function-name my-url-function \ --runtime nodejs18.x \ --zip-file fileb://function.zip \ --handler index.handler \ --role arn:aws:iam::123456789012:role/lambda-url-role
  4. Fügen Sie Ihrer Funktion eine ressourcenbasierte Richtlinie hinzu, die Berechtigungen für den öffentlichen Zugriff auf Ihre Funktions-URL gewährt.

    aws lambda add-permission \ --function-name my-url-function \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type "NONE" \ --statement-id url
  5. Erstellen Sie einen URL-Endpunkt für die Funktion mit dem Befehl create-function-url-config.

    aws lambda create-function-url-config \ --function-name my-url-function \ --auth-type NONE

Testen des Funktions-URL-Endpunkts

Rufen Sie Ihre Lambda-Funktion auf, indem Sie Ihren Funktions-URL-Endpunkt mit einem HTTP-Client wie curl oder Postman aufrufen.

curl 'https://abcdefg.lambda-url.us-east-1.on.aws/' \ -H 'Content-Type: application/json' \ -d '{"num1": "10", "num2": "10"}'

Die Ausgabe sollte folgendermaßen aussehen:

The product of 10 and 10 is 100

Erstellen Sie eine Lambda-Funktion mit einer Funktions-URL () CloudFormation

Sie können mithilfe des AWS CloudFormation Typs AWS::Lambda::Url auch eine Lambda-Funktion mit einem Funktions-URL-Endpunkt erstellen.

Resources: MyUrlFunction: Type: AWS::Lambda::Function Properties: Handler: index.handler Runtime: nodejs18.x Role: arn:aws:iam::123456789012:role/lambda-url-role Code: ZipFile: | exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; }; Description: Create a function with a URL. MyUrlFunctionPermissions: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref MyUrlFunction Action: lambda:InvokeFunctionUrl Principal: "*" FunctionUrlAuthType: NONE MyFunctionUrl: Type: AWS::Lambda::Url Properties: TargetFunctionArn: !Ref MyUrlFunction AuthType: NONE

Erstellen einer Lambda-Funktion mit einer Funktions-URL (AWS SAM)

Sie können mit AWS Serverless Application Model (AWS SAM) auch eine Lambda-Funktion erstellen, die mit einer Funktions-URL konfiguriert ist.

ProductFunction: Type: AWS::Serverless::Function Properties: CodeUri: function/. Handler: index.handler Runtime: nodejs18.x AutoPublishAlias: live FunctionUrlConfig: AuthType: NONE

Bereinigen Ihrer Ressourcen

Sie können jetzt die Ressourcen, die Sie für dieses Tutorial erstellt haben, löschen, es sei denn, Sie möchten sie behalten. Durch das Löschen von AWS Ressourcen, die Sie nicht mehr verwenden, vermeiden Sie unnötige Kosten für Ihre AWS-Konto.

So löschen Sie die Ausführungsrolle
  1. Öffnen Sie die Seite Roles in der IAM-Konsole.

  2. Wählen Sie die von Ihnen erstellte Ausführungsrolle aus.

  3. Wählen Sie Löschen aus.

  4. Geben Sie den Namen der Rolle in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.

So löschen Sie die Lambda-Funktion:
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die Funktion aus, die Sie erstellt haben.

  3. Wählen Sie Aktionen, Löschen aus.

  4. Geben Sie delete in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.