Mehrmaliges Aufrufen von Lambda mithilfe eines Zuordnungszustands - AWS Step Functions

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.

Mehrmaliges Aufrufen von Lambda mithilfe eines Zuordnungszustands

In diesem Tutorial erfahren Sie, wie Sie mittels eines Map-Zustands eine AWS Lambda-Funktion basierend auf der Eingabe des Zustandsautomaten mehrmals aufrufen.

DieErstellen einer Step Functions State Machine, die Lambda verwendetDas -Tutorial führt Sie durch das Erstellen eines Zustandsautomaten, der eine Lambda-Funktion aufruft. Wenn Sie dieses Tutorial abgeschlossen haben, fahren Sie mitSchritt 4und benutze dasAWS Identity and Access Management(IAM) -Rolle und Lambda-Funktion, die Sie zuvor erstellt haben.

Schritt 1: Erstellen einer IAM-Rolle für Lambda

Sowohl AWS Lambda als auch AWS Step Functions können Code ausführen und auf AWS-Ressourcen zugreifen (zum Beispiel auf Daten, die in Amazon S3-Buckets gespeichert sind). Zur Gewährleistung der Sicherheit müssen Sie Lambda und Step Functions Zugriff auf diese Ressourcen gewähren.

Lambda verlangt, dass Sie eineAWS Identity and Access ManagementWenn Sie eine Lambda-Funktion erstellen, genauso wie Step Functions erfordert, genauso wie Step Functions erfordert, dass Sie eine IAM-Rolle zuweisen, genauso wie Step Functions erfordert, dass Sie eine IAM-Rolle zuweisen, genauso wie

Sie können die IAM-Konsole zum Erstellen einer serviceverknüpften Rolle verwenden.

So erstellen Sie eine Rolle (Konsole)

  1. Melden Sie sich bei der AWS Management Console an, und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich der IAM Console Roles. Wählen Sie dann Create Role.

  3. Wählen Sie das SymbolAWS-ServiceRollentyp und dannLambdaaus.

  4. Wählen Sie das SymbolLambdaAnwendungsfall. Anwendungsfälle werden durch den Service definiert, damit die für den Service erforderliche Vertrauensrichtlinie enthalten ist. Klicken Sie dann auf Next (Weiter): Berechtigungen.

  5. Wählen Sie eine oder mehrere Berechtigungsrichtlinien aus, die Sie an die Rolle anfügen möchten (z. B. AWSLambdaBasicExecutionRole). Siehe AWS Lambda-Berechtigungsmodell.

    Aktivieren Sie das Kontrollkästchen neben der Richtlinie, die die Berechtigungen zuweist, die die Rolle haben soll, und wählen Sie dann das Kontrollkästchen neben der Richtlinie ausWeiter: Prüfen.

  6. Geben Sie einen Role name ein.

  7. (Optional:) Bearbeiten Sie in Role description die Beschreibung für die neue serviceverknüpfte Rolle.

  8. Prüfen Sie die Rolle und klicken Sie dann auf Create Role (Rolle erstellen).

Schritt 2: Erstellen einer Lambda-Funktion

Ihre Lambda-Funktion erhält Eingabe (einen Namen) und gibt eine Grußworte zurück, die den Eingabewert enthält.

Wichtig

Stellen Sie sicher, dass Ihre Lambda-Funktion unter der gleichen istAWS-Konto undAWSRegion als Zustandsautomat.

  1. Öffnen SieLambda-Konsoleund wähleFunktion erstellenaus.

  2. Wählen Sie im Abschnitt Blueprints Author from scratch aus.

  3. In derGrundlegende Informationenkonfigurieren Sie Ihre Lambda-Funktion:

    1. Geben Sie für Function name (Funktionsname) HelloFunction ein.

    2. Wählen Sie unter Runtime (Laufzeit) die Option Node.js 12 aus.

    3. Wählen Sie für Role (Rolle) die Option Choose an existing role (Eine vorhandene Rolle wählen) aus.

    4. FürVorhandene RollewählenDie Lambda-Rolle, die Sie zuvor erstellt habenaus.

      Anmerkung

      Wenn die IAM-Rolle, die Sie erstellt haben, nicht in der Liste angezeigt wird, kann es möglicherweise noch einige Minuten dauern, bis die Rolle zu Lambda weitergeleitet wird.

    5. Wählen Sie Create function (Funktion erstellen).

      Wenn Ihre Lambda-Funktion erstellt wurde, beachten Sie ihren Amazon-Ressourcennamen (ARN) in der oberen rechten Ecke der Seite. Beispiel:

      arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
  4. Kopieren Sie den folgenden Code für die Lambda-Funktion in dieFunktionscode-Abschnitt imHelloFunctionangezeigten.

    exports.handler = (event, context, callback) => { callback(null, "Hello, " + event.who + "!"); };

    Dieser Code erstellt eine Grußformel aus dem Feld who der Eingabedaten, die durch das in Ihre Funktion übergebene event-Objekt bereitgestellt wird. Sie fügen später Eingabedaten für diese Funktion hinzu, wenn Sie eine neue Ausführung starten. Die callback-Methode gibt die erstellte Grußformel aus Ihrer Funktion zurück.

  5. Wählen Sie Save (Speichern) aus.

Schritt 3: Lambda-Funktion testen

Testen Sie Ihre Lambda-Funktion, um sie in Aktion zu sehen.

  1. Wählen Sie für Select a test event (Ein Testereignis auswählen) die Option Configure test event (Testereignis konfigurieren). Geben Sie für Event name (Ereignisname) HelloFunction ein.

  2. Ersetzen Sie die Beispieldaten durch Folgendes.

    { "who": "AWS Step Functions" }

    Die"who"Der Eintrag entspricht derevent.whoKlicken Sie in Ihrer Lambda-Funktion und schließen Sie die Grußworte ab. Sie werden die gleichen Eingabedaten verwenden, wenn Sie die Funktion als Step Functions Functions-Aufgabe ausführen.

  3. Wählen Sie Create (Erstellen) aus.

  4. Auf derHelloFunctionangezeigten,TestVerwenden Sie Ihre Lambda-Funktion unter Verwendung der neuen Daten.

    Die Ergebnisse des Tests werden oben auf der Seite angezeigt. Erweitern Sie Details, um die Ausgabe anzuzeigen.

Schritt 4: Erstellen eines Zustandsautomaten

Verwenden derStep Functions KonsoleSo erstellen Sie einen Zustandsautomaten mit einerMapstate. Fügen Sie eine hinzuTaskSie verfügen über einen Hinweis auf Ihren Lambda. Die Lambda-Funktion wird für jede Iteration desMapstate, basierend auf der Eingabe des Zustandsautomaten.

  1. Öffnen SieStep Functions Konsoleund wähleErstellen eines Zustandsautomatenaus.

  2. Wählen Sie auf der Seite Define state machine (Zustandsautomaten definieren) die Option Author with code snippets (Mit Codeausschnitten erstellen). Wählen Sie unter Type (Typ) die Option Standard aus. Machen Sie eine Eingabe für Name, z. B. MapLambda.

    Anmerkung

    Statuscomputer-, Ausführungs- und Aktivitätsnamen müssen 1 bis 80 Zeichen lang sein, müssen für Ihr Konto eindeutig sein undAWSRegion und darf Folgendes nicht enthalten:

    • Leerzeichen

    • Platzhalterzeichen (? *)

    • Bracket-Zeichen (< > { } [ ])

    • Sonderzeichen (: ; , \ | ^ ~ $ # % & ` ")

    • Steuerzeichen (\\u0000-\\u001foder\\u007f-\\u009f) enthalten.

    Mit Step Functions können Sie Statuscomputer-, Ausführungs- und Aktivitätsnamen erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit AmazonCloudWatchaus. Um sicherzustellen, dass Sie nachverfolgen könnenCloudWatchMetriken, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

  3. In derDefinition eines ZustandsautomatenFügen Sie mithilfe des ARN von die folgende Definition eines Zustandsautomaten hinzu.Die Lambda-Funktion, die Sie zuvor erstellt haben, wie im folgenden Beispiel gezeigt.

    { "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "Iterator": { "StartAt": "CallLambda", "States": { "CallLambda": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunction", "End": true } } }, "End": true } } }

    Dies ist eine Beschreibung Ihres Zustandsautomaten mithilfe von Amazon States Language. Sie definiert eineMapBundesstaat benanntExampleMapStateenthält Folgendes:Taskstate (CallLambda) aufgerufen wird, die Ihre Lambda-Funktion aufruft. Weitere Informationen finden Sie unter State Machine Structure.

    Anmerkung

    Sie können auch ein Retry für Task-Zustände einrichten. Stellen Sie als bewährte Methode sicher, dass der Produktionscode Lambda-Service-Ausnahmen (Lambda.ServiceExceptionundLambda.SdkClientException) enthalten. Weitere Informationen finden Sie unter:

    Wählen Sie Next (Weiter) aus.

  4. Erstellen oder geben Sie eine IAM-Rolle ein:

    • Um eine IAM-Rolle für Step Functions zu erstellen, wählen SieErstellen einer IAM-Rolle für mich, und geben Sie einNamefür Ihre -Rolle.

    • Wenn du es getan hastZuvor wurde eine IAM-Rolle erstelltMit den richtigen Berechtigungen für Ihren Zustandsautomaten wählen SieWählen Sie eine vorhandene IAM-Rolle ausaus. Wählen Sie eine Rolle aus der Liste aus oder geben Sie einen ARN für diese Rolle an.

    Anmerkung

    Wenn Sie die von Step Functions erstellte IAM-Rolle löschen, können Step Functions sie später nicht neu erstellt werden. Ebenso wenig kann, wenn Sie die Rolle verändern (z. B. durch Entfernen von Step Functions von den Prinzipalen in der IAM-Richtlinie), Step Functions später seine ursprünglichen Einstellungen wiederherstellen.

  5. Klicken Sie auf Next (Weiter).

Schritt 5: Starten einer neuen Ausführung

Nach dem Erstellen des Zustandsautomaten starten Sie eine Ausführung.

  1. Auf derLambdaStateMaschineangezeigten, wählenStarten der Ausführungaus.

    Die Seite New execution wird angezeigt.

  2. (Optional) Um Ihre Ausführung zu identifizieren, können Sie einen Namen für sie in derNameaus. Standardmäßig generiert Step Functions automatisch einen eindeutigen Ausführungsnamen.

    Anmerkung

    Mit Step Functions können Sie Statuscomputer-, Ausführungs- und Aktivitätsnamen erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit AmazonCloudWatchaus. Um sicherzustellen, dass Sie nachverfolgen könnenCloudWatchMetriken, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

  3. Ersetzen Sie im Ausführungs-Eingabebereich die Beispieldaten durch folgende Daten.

    [ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]

    IhreMapstate wird iterieren und ausführenCallLambdaAufgabenstatus für jedes dieser Elemente in der Eingabe."who"ist der Schlüsselname, den Ihre Lambda-Funktion verwendet, um den Namen der zu begrüßenden Person zu erhalten.

  4. Wählen Sie Start Execution aus.

    Eine neue Ausführung Ihres Zustandsautomaten startet und eine neue Seite mit Ihrer laufenden Ausführung wird angezeigt.

  5. Zum Anzeigen der Ergebnisse der Ausführung expandieren Sie den Abschnitt Output (Ausgang) unter Execution Details (Ausführungsdetails).

    [ "Hello, bob!", "Hello, meg!", "Hello, joe!" ]

    Die Ausgabe für jede der Lambda-Funktionsausführungen wird in der Ausgabe für den Zustandsautomaten kombiniert.

Weitere Informationen zur Verwendung von Map-Zuständen finden Sie im Folgenden.