Step Functions anzeigen - 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.

Step Functions anzeigen

In diesem Tutorial erfahren Sie, wie Sie X-Ray verwenden, um Fehler zu verfolgen, die beim Ausführen eines Zustandsautomaten auftreten. Sie können es verwendenAWS X-RayUm die Komponenten Ihres Zustandsautomaten zu visualisieren, Leistungsengpässe zu erkennen und Anforderungen zu beheben, die zu einem Fehler geführt haben. In diesem Tutorial erstellen Sie mehrere Lambda-Funktionen, die zufällig Fehler erzeugen, die Sie dann mit X-Ray verfolgen und analysieren können.

DieErstellen einer Step Functions State Machine, die Lambda verwendetTutorial führt Sie durch die Erstellung eines Zustandsautomaten, der eine Lambda-Funktion aufruft. Wenn Sie dieses Tutorial abgeschlossen haben, fahren Sie mitSchritt 2und benutze dasAWS Identity and Access Management(IAM) -Rolle, 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 Management(IAM) -Rolle, wenn Sie eine Lambda-Funktion erstellen, genauso wie Step Functions erfordert, dass Sie eine IAM-Rolle zuweisen, wenn Sie einen Zustandsautomaten erstellen.

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 dannWeiter: 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 löst zufällig Fehler oder Timeout aus und erzeugt Beispieldaten, die in X-Ray angezeigt werden sollen.

Wichtig

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

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

  2. Wählen Sie im Abschnitt Create function die Option Author from scratch.

  3. In derGrundlegende Informationen-Abschnitt konfigurieren Sie Ihre Lambda-Funktion:

    1. Geben Sie für Function name (Funktionsname) TestFunction1 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ählen SieDie Lambda-Rolle, die Sie zuvor erstellt habenaus.

      Anmerkung

      Wenn die von Ihnen erstellte IAM-Rolle nicht in der Liste angezeigt wird, kann es möglicherweise noch einige Minuten dauern, bis die Rolle an Lambda weitergeleitet wird.

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

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

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

    function getRandomSeconds(max) { return Math.floor(Math.random() * Math.floor(max)) * 1000; } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } exports.handler = async (event, context) => { if(getRandomSeconds(4) === 0) { throw new Error("Something went wrong!"); } let wait_time = getRandomSeconds(5); await sleep(wait_time); return { 'response': true } };

    Dieser Code erzeugt zufällig zeitgesteuerte Fehler, die verwendet werden, um Beispielfehler in Ihrem Zustandscomputer zu generieren, die mithilfe von X-Ray-Traces angezeigt und analysiert werden können.

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

Schritt 3: Erstellen Sie zwei weitere Lambda-Funktionen

Erstellen Sie zwei weitere Lambda-Funktionen.

  1. Wiederholen Sie Schritt 2, um zwei weitere Lambda-Funktionen zu erstellen. Für die nächste Funktion wird inFunktionsnameden Wert einTestFunction2aus. Für die letzte Funktion, inFunktionsnameden Wert einTestFunction3aus.

  2. Prüfen Sie in der Lambda-Konsole, ob Sie jetzt drei Lambda-Funktionen haben,TestFunction1,TestFunction2, undTestFunction3aus.

Schritt 4: Erstellen eines Zustandsautomaten

Verwenden derStep Functions -KonsoleErstellen eines Zustandsautomaten mit dreiTaskZustände. EACHTaskstate wird auf eine Ihrer drei Lambda-Funktionen verweisen.

  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.

    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 folgende Angaben 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 verfolgen könnenCloudWatchMetriken, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

  3. In derZustandsautomatendefinitionersetzen Sie das Beispiel durch die folgende Statusmaschinendefinition. Für jedenTaskTask-Status, verwenden Sie den ARN vonDie entsprechende Lambda-Funktion, die Sie zuvor erstellt habenwie im folgenden Beispiel gezeigt.

    { "StartAt": "CallTestFunction1", "States": { "CallTestFunction1": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:test-function1", "Catch": [ { "ErrorEquals": [ "States.TaskFailed" ], "Next": "AfterTaskFailed" } ], "Next": "CallTestFunction2" }, "CallTestFunction2": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:test-function2", "Catch": [ { "ErrorEquals": [ "States.TaskFailed" ], "Next": "AfterTaskFailed" } ], "Next": "CallTestFunction3" }, "CallTestFunction3": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:test-function3", "TimeoutSeconds": 5, "Catch": [ { "ErrorEquals": [ "States.Timeout" ], "Next": "AfterTimeout" }, { "ErrorEquals": [ "States.TaskFailed" ], "Next": "AfterTaskFailed" } ], "Next": "Succeed" }, "Succeed": { "Type": "Succeed" }, "AfterTimeout": { "Type": "Fail" }, "AfterTaskFailed": { "Type": "Fail" } } }

    Dies ist eine Beschreibung Ihres Zustandsautomaten mithilfe der Amazon States Language. Es definiert dreiTaskBundesstaaten benanntCallTestFunction1,CallTestFunction2undCallTestFunction3aus. Jeder ruft eine Ihrer drei Lambda-Funktionen auf. Weitere Informationen finden Sie unter State Machine Structure.

    Wählen Sie Next (Weiter) aus.

  4. Machen Sie eine Eingabe für Name, z. B. TraceFunctions.

  5. 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 Sie es getan habenZuvor eine IAM-Rolle erstelltWählen Sie mit den richtigen Berechtigungen für Ihren ZustandsautomatenWä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 IAM-Rolle löschen, die Step Functions erstellt wurde, können Step Functions sie später nicht neu erstellen. Ebenso wenig kann, wenn Sie die Rolle ändern (z. B. durch Entfernen von Step Functions von den Prinzipalen in der IAM-Richtlinie), Step Functions später seine ursprünglichen Einstellungen wiederherstellen.

  6. In derNachverfolgungstellen Sie sicher, dassX-Ray aktivierenTracing ist ausgewählt. Auf diese Weise können Sie die Röntgenspuren Ihrer Zustandsmaschine anzeigen.

  7. Wählen Sie Create State Machine (Zustandsautomat erstellen) aus.

Schritt 5: Starten einer neuen Ausführung

Starten Sie nach dem Erstellen des Zustandsautomaten eine Ausführung.

  1. Auf derTraceFunctions-Seite wählenStarten der Ausführungaus.

    Die Seite New execution wird angezeigt.

  2. (Optional) Zur Identifizierung Ihrer Ausführung können Sie imNameaus. 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 verfolgen könnenCloudWatchMetriken, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

  3. Wählen Sie Start Execution aus.

    Eine neue Ausführung Ihres Zustandsautomaten startet und eine neue Seite mit Ihrer laufenden Ausführung wird angezeigt. Führen Sie mehrere (mindestens drei) Hinrichtungen aus.

  4. Nachdem die Hinrichtungen beendet sind, folgen Sie derX-Ray-AblaufverfolLink. Sie können den Trace anzeigen, während eine Ausführung noch ausgeführt wird, aber möglicherweise möchten Sie die Ausführungsergebnisse sehen, bevor Sie die X-Ray-Trac-Map anzeigen.

    
                            X-Ray aktivieren
  5. Zeigen Sie die Service-Übersicht an, um zu identifizieren, wo Fehler auftreten, Verbindungen mit hoher Latenz oder Ablaufverfolgungen für erfolglose Anforderungen. In diesem Beispiel sehen Sie, wie viel Datenverkehr jede -Funktion erhält.TestFunction2wurde öfter genannt alsTestFunction3, undTestFunction1wurde mehr als doppelt so oft genannt wieTestFunction2aus.

    Die Service-Karte zeigt den Zustand jedes Knotens an und markiert ihn farblich auf Grundlage des Verhältnisses zwischen erfolgreichen Anrufen und Fehlern:

    • Grün für erfolgreiche Anrufe

    • Rot für Server-Fehler (500er-Fehler)

    • Gelb für Client-Fehler (400er-Fehler)

    • Violett für Ablehnungsfehler („Fehler 429 – Zu viele Anfragen”)

    
                            X-Ray aktivieren

    Sie können auch einen Service-Knoten auswählen, um Anforderungen für diesen Knoten anzuzeigen, oder einen Edge zwischen zwei Knoten, um Anforderungen anzuzeigen, die diese Verbindung passiert haben.

  6. Zeigen Sie die X-Ray Trace-Map an, um zu sehen, was bei jeder Ausführung passiert ist Die Timeline-Ansicht zeigt eine Hierarchie der Segmente und Untersegmente. Der erste Eintrag in der Liste ist das Segment, das alle vom Service für eine einzelne Anforderung aufgezeichneten Daten darstellt. Unter dem Segment befinden sich Untersegmente. In diesem Beispiel werden die von den Lambda-Funktionen aufgezeichneten Untersegmente gezeigt.

    
                            X-Ray aktivieren

Weitere Informationen zum Verständnis von Röntgenspuren und zur Verwendung von X-Ray mit Step Functions finden Sie in derAWS X-RayStep Functions API