Röntgenspuren in 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.

Röntgenspuren in Step Functions anzeigen

In diesem Tutorial erfahren Sie, wie Sie mit X-Ray Fehler verfolgen können, die beim Ausführen einer Zustandsmaschine auftreten. Sie können AWS X-Raydamit die Komponenten Ihrer Zustandsmaschine visualisieren, Leistungsengpässe identifizieren und Anfragen, die zu einem Fehler geführt haben, beheben. In diesem Tutorial erstellen Sie mehrere Lambda-Funktionen, die nach dem Zufallsprinzip Fehler erzeugen, die Sie dann mit X-Ray verfolgen und analysieren können.

Das Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendet Tutorial führt Sie durch die Erstellung einer Zustandsmaschine, die eine Lambda-Funktion aufruft. Wenn Sie dieses Tutorial abgeschlossen haben, fahren Sie mit Schritt 2 fort und verwenden Sie die AWS Identity and Access Management (IAM-) Rolle, die Sie zuvor erstellt haben.

Schritt 1: Erstellen Sie eine IAM-Rolle für Lambda

Beides AWS Lambda und AWS Step Functions kann Code ausführen und auf AWS Ressourcen zugreifen (z. B. auf Daten, die in Amazon S3 S3-Buckets gespeichert sind). Um die Sicherheit zu gewährleisten, müssen Sie Lambda und Step Functions Zugriff auf diese Ressourcen gewähren.

Lambda verlangt, dass Sie beim Erstellen einer Lambda-Funktion eine AWS Identity and Access Management (IAM-) Rolle zuweisen, genauso wie Step Functions verlangt, dass Sie beim Erstellen einer Zustandsmaschine eine IAM-Rolle zuweisen.

Sie verwenden die IAM-Konsole, um eine serviceverknüpfte Rolle zu erstellen.

So erstellen Sie eine Rolle (Konsole)
  1. Melden Sie sich bei der an AWS Management Console 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 den Rollentyp AWS Service und dann Lambda aus.

  4. Wählen Sie den Lambda-Anwendungsfall. Anwendungsfälle werden durch den Service definiert, damit die für den Service erforderliche Vertrauensrichtlinie enthalten ist. Wählen Sie dann Next: Permissions.

  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 der Rolle gewährt werden sollen. Wählen Sie dann Next: Review aus.

  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 gibt nach dem Zufallsprinzip Fehler oder Timeout aus und erzeugt Beispieldaten, die in X-Ray angezeigt werden können.

Wichtig

Stellen Sie sicher, dass sich Ihre Lambda-Funktion unter demselben AWS Konto und derselben AWS Region wie Ihr State Machine befindet.

  1. Öffnen Sie die Lambda-Konsole und wählen Sie Create function.

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

  3. Konfigurieren Sie im Abschnitt Grundinformationen Ihre Lambda-Funktion:

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

    2. Wählen Sie unter Laufzeit die Option Node.js 18.x aus.

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

    4. Wählen Sie unter Existing role die Lambda-Rolle aus, die Sie zuvor erstellt haben.

      Anmerkung

      Wenn die von Ihnen erstellte IAM-Rolle nicht in der Liste erscheint, dauert es möglicherweise dennoch einige Minuten, bis die Rolle an Lambda weitergegeben wird.

    5. Wählen Sie Funktion erstellen.

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

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

    function getRandomSeconds(max) { return Math.floor(Math.random() * Math.floor(max)) * 1000; } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } export const handler = async (event) => { 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 nach dem Zufallsprinzip zeitlich begrenzte Fehler, die verwendet werden, um Beispielfehler in Ihrer Zustandsmaschine zu generieren, die mithilfe von Röntgenspuren angezeigt und analysiert werden können.

  5. Wählen Sie Speichern.

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. Geben Sie für die nächste Funktion im Feld TestFunction2Funktionsname den Wert ein. Geben Sie für die letzte Funktion im Feld Funktionsname den Wert einTestFunction3.

  2. Vergewissern Sie sich in der Lambda-Konsole, dass Sie jetzt über drei Lambda-Funktionen verfügen: TestFunction1TestFunction2, und. TestFunction3

Schritt 4: Erstellen Sie eine Zustandsmaschine

In diesem Schritt verwenden Sie die Step Functions-Konsole, um eine Zustandsmaschine mit drei Task Zuständen zu erstellen. Jeder Task Status wird auf eine Ihrer drei Lambda-Funktionen verweisen.

  1. Öffnen Sie die Step Functions Functions-Konsole und wählen Sie Create State Machine.

    Wichtig

    Stellen Sie sicher, dass sich Ihr State Machine unter demselben AWS Konto und derselben Region befindet wie die Lambda-Funktionen, die Sie zuvor in Schritt 2 und Schritt 3 erstellt haben.

  2. Wählen Sie im Dialogfeld Vorlage auswählen die Option Leer aus.

  3. Wählen Sie Select (Auswählen). Dadurch wird Workflow Studio in geöffnetEntwurfsmodus.

  4. Für dieses Tutorial schreiben Sie die Amazon States Language (ASL-) Definition Ihrer Zustandsmaschine in denCode-Editor. Wählen Sie dazu Code.

  5. Entfernen Sie den vorhandenen Boilerplate-Code und fügen Sie den folgenden Code ein. Denken Sie daran, in der Aufgabenstatusdefinition die Beispiel-ARNs durch die ARNs der Lambda-Funktionen zu ersetzen, die Sie erstellt haben.

    { "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 Ihrer Zustandsmaschine in der Sprache Amazon States. Es definiert drei Task Staaten mit dem NamenCallTestFunction1, CallTestFunction2 undCallTestFunction3. Jede Funktion ruft eine Ihrer drei Lambda-Funktionen auf. Weitere Informationen finden Sie unter State Machine Structure.

  6. Geben Sie einen Namen für Ihre Zustandsmaschine an. Wählen Sie dazu das Bearbeitungssymbol neben dem Standardnamen der Zustandsmaschine von MyStateMachine. Geben Sie dann unter State-Machine-Konfiguration einen Namen in das Feld State-Machine-Name ein.

    Geben Sie für dieses Tutorial den Namen TraceFunctions ein.

  7. (Optional) Geben Sie unter State-Machine-Konfiguration weitere Workflow-Einstellungen an, z. B. den Zustandsmaschinentyp und seine Ausführungsrolle.

    Wählen Sie für dieses Tutorial unter Zusätzliche Konfiguration die Option X-Ray-Tracing aktivieren aus. Behalten Sie alle anderen Standardauswahlen in den State-Machine-Einstellungen bei.

    Wenn Sie zuvor eine IAM-Rolle mit den richtigen Berechtigungen für Ihren Zustandsmaschine erstellt haben und diese verwenden möchten, wählen Sie unter Berechtigungen die Option Vorhandene Rolle auswählen und dann eine Rolle aus der Liste aus. Oder wählen Sie Einen Rollen-ARN eingeben aus und geben Sie dann einen ARN für diese IAM-Rolle ein.

  8. Wählen Sie im Dialogfeld „Rollenerstellung bestätigen“ die Option Bestätigen aus, um fortzufahren.

    Sie können auch Rolleneinstellungen anzeigen wählen, um zur State-Machine-Konfiguration zurückzukehren.

    Anmerkung

    Wenn Sie die von Step Functions erstellte IAM-Rolle löschen, kann Step Functions sie später nicht mehr neu erstellen. Ebenso kann Step Functions ihre ursprünglichen Einstellungen später nicht wiederherstellen, wenn Sie die Rolle ändern (z. B. indem Sie Step Functions aus den Principals in der IAM-Richtlinie entfernen).

Schritt 5: Führen Sie die Zustandsmaschine aus

State-Machine-Ausführungen sind Instanzen, in denen Sie Ihren Workflow ausführen, um Aufgaben auszuführen.

  1. Wählen Sie auf der TraceFunctionsSeite Ausführung starten aus.

    Die Seite New execution wird angezeigt.

  2. Gehen Sie im Dialogfeld Ausführung starten wie folgt vor:

    1. (Optional) Um Ihre Ausführung zu identifizieren, können Sie im Feld Name einen Namen dafür angeben. Standardmäßig generiert Step Functions automatisch einen eindeutigen Ausführungsnamen.

      Anmerkung

      Mit Step Functions können Sie Namen für Zustandsmaschinen, Ausführungen und Aktivitäten sowie Beschriftungen erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit Amazon. CloudWatch Um sicherzustellen, dass Sie CloudWatch Messwerte verfolgen können, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

    2. Wählen Sie Start execution (Ausführung starten) aus.

    3. Die Step Functions Functions-Konsole leitet Sie zu einer Seite weiter, die mit Ihrer Ausführungs-ID betitelt ist. Diese Seite wird als Seite mit den Ausführungsdetails bezeichnet. Auf dieser Seite können Sie die Ausführungsergebnisse im Verlauf der Ausführung oder nach deren Abschluss überprüfen.

      Um die Ausführungsergebnisse zu überprüfen, wählen Sie in der Diagrammansicht einzelne Status aus und wählen Sie dann die einzelnen Registerkarten im Schrittdetails Bereich, um die Details der einzelnen Status, einschließlich Eingabe, Ausgabe und Definition, anzuzeigen. Einzelheiten zu den Ausführungsinformationen, die Sie auf der Seite mit den Ausführungsdetails einsehen können, finden Sie unterSeite mit Ausführungsdetails – Schnittstellenübersicht.

      Führen Sie mehrere (mindestens drei) Ausführungen aus.

  3. Nachdem die Ausführungen abgeschlossen sind, folgen Sie dem Link zur X-Ray-Trace-Map. Sie können den Trace anzeigen, während eine Ausführung noch läuft, aber vielleicht möchten Sie sich die Ausführungsergebnisse ansehen, bevor Sie die X-Ray-Trace-Map aufrufen.

    X-Ray aktivieren
  4. Sehen Sie sich die Service-Map an, um festzustellen, wo Fehler auftreten, Verbindungen mit hoher Latenz hergestellt wurden oder ob Anfragen nicht erfolgreich waren. In diesem Beispiel können Sie sehen, wie viel Traffic jede Funktion empfängt. TestFunction2wurde häufiger aufgerufen als TestFunction3 und TestFunction1 wurde mehr als doppelt so oft aufgerufen wieTestFunction2.

    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 Dienstknoten auswählen, um Anfragen für diesen Knoten anzuzeigen, oder eine Schnittstelle zwischen zwei Knoten, um Anfragen anzuzeigen, die über diese Verbindung übertragen wurden.

  5. Sehen Sie sich 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. Dieses Beispiel zeigt Untersegmente, die von den Lambda-Funktionen aufgezeichnet wurden.

    X-Ray aktivieren

    Weitere Informationen zum Verständnis von Röntgenspuren und zur Verwendung von X-Ray with Step Functions finden Sie im AWS X-Ray und Step Functions