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 verwenden AWS X-Rayum die Komponenten Ihrer Zustandsmaschine zu visualisieren, Leistungsengpässe zu identifizieren und Anfragen zu beheben, die zu einem Fehler geführt haben. 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 AWS Identity and Access Management (IAM) Rolle, die Sie zuvor erstellt haben.
Schritt 1: Eine IAM Rolle für Lambda erstellen
beides AWS Lambda and AWS Step Functions kann Code ausführen und darauf zugreifen AWS Ressourcen (z. B. in Amazon S3 S3-Buckets gespeicherte Daten). Um die Sicherheit zu gewährleisten, müssen Sie Lambda und Step Functions Zugriff auf diese Ressourcen gewähren.
Lambda verlangt von Ihnen die Zuweisung eines AWS Identity and Access Management (IAM) Rolle, wenn Sie eine Lambda-Funktion erstellen, 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)
Melden Sie sich bei AWS Management Console und öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich der IAM Konsole die Option Rollen aus. Wählen Sie dann Create Role.
-
Wählen Sie das Symbol AWS Geben Sie die Servicerolle ein, und wählen Sie dann Lambda aus.
-
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.
-
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.
-
Geben Sie einen Role name ein.
-
(Optional:) Bearbeiten Sie in Role description die Beschreibung für die neue serviceverknüpfte Rolle.
-
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 Ihre Lambda-Funktion unter derselben steht AWS Konto und AWS-Region als deine Staatsmaschine.
-
Öffnen Sie die Lambda-Konsole
und wählen Sie Create function. -
Wählen Sie im Abschnitt Create function die Option Author from scratch.
-
Konfigurieren Sie im Abschnitt Grundinformationen Ihre Lambda-Funktion:
-
Geben Sie für Function name (Funktionsname)
TestFunction1
ein. -
Wählen Sie unter Laufzeit die Option Node.js 18.x aus.
-
Wählen Sie für Role (Rolle) die Option Choose an existing role (Eine vorhandene Rolle wählen) aus.
-
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, kann es dennoch einige Minuten dauern, bis die Rolle an Lambda weitergegeben wird.
-
Wählen Sie Funktion erstellen aus.
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
-
-
Kopieren Sie den folgenden Code für die Lambda-Funktion in den Funktionscode-Abschnitt des
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.
-
Wählen Sie Save (Speichern) aus.
Schritt 3: Erstellen Sie zwei weitere Lambda-Funktionen
Erstellen Sie zwei weitere Lambda-Funktionen.
-
Wiederholen Sie Schritt 2, um zwei weitere Lambda-Funktionen zu erstellen. Geben Sie für die nächste Funktion im Feld
TestFunction2
Funktionsname den Wert ein. Geben Sie für die letzte Funktion im Feld Funktionsname den Wert einTestFunction3
. -
Vergewissern Sie sich in der Lambda-Konsole, dass Sie jetzt über drei Lambda-Funktionen verfügen:
TestFunction1
TestFunction2
, und.TestFunction3
Schritt 4: Erstellen Sie eine Zustandsmaschine
In diesem Schritt verwenden Sie die Step Functions-KonsoleTask
Zuständen zu erstellen. Jeder Task
Status wird auf eine Ihrer drei Lambda-Funktionen verweisen.
-
Öffnen Sie die Step Functions Functions-Konsole
und wählen Sie Create State Machine. Wichtig
Stellen Sie sicher, dass sich Ihr Zustandsmaschine im selben Zustand befindet AWS Konto und Region als die Lambda-Funktionen, die Sie zuvor in Schritt 2 und Schritt 3 erstellt haben.
Wählen Sie im Dialogfeld Vorlage auswählen die Option Leer aus.
Wählen Sie „Auswählen“, um Workflow Studio in zu öffnenEntwurfsmodus.
-
Für dieses Tutorial schreiben Sie die Amazon States Language (ASL) -Definition Ihrer Zustandsmaschine in denCode-Editor. Wählen Sie dazu Code.
-
Entfernen Sie den vorhandenen Boilerplate-Code und fügen Sie den folgenden Code ein. Denken Sie daran, in der Aufgabenstatusdefinition das Beispiel ARNs durch die Lambda-Funktionen zu ersetzen, die Sie erstellt haben. ARNs
{ "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. -
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. -
(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 Rolle eingeben aus ARN und geben Sie dann eine Rolle ARN für diese IAM Rolle ein.
-
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 Prinzipalen 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.
-
Auf dem
TraceFunctions
Wählen Sie auf der Seite Ausführung starten aus.Die Seite New execution wird angezeigt.
-
Gehen Sie im Dialogfeld Ausführung starten wie folgt vor:
-
(Optional) Geben Sie einen benutzerdefinierten Ausführungsnamen ein, um den generierten Standard zu überschreiben.
ASCIINichtnamen und Protokollierung
Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Beschriftungen, die ASCII Nichtzeichen enthalten. Da solche Zeichen nicht mit Amazon funktionieren, empfehlen wir CloudWatch, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können CloudWatch.
-
Wählen Sie Start execution (Ausführung starten) aus.
-
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 Einzelheiten zu den Schritten 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 unterÜberblick über die Ausführungsdetails.
Führen Sie mehrere (mindestens drei) Ausführungen aus.
-
-
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.
-
Sehen Sie sich die Service-Map an, um festzustellen, wo Fehler auftreten, Verbindungen mit hoher Latenz oder Traces für Anfragen, die nicht erfolgreich waren. In diesem Beispiel können Sie sehen, wie viel Traffic jede Funktion empfängt.
TestFunction2
wurde häufiger aufgerufen alsTestFunction3
undTestFunction1
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”)
Sie können auch einen Dienstknoten auswählen, um Anfragen für diesen Knoten anzuzeigen, oder eine Kante zwischen zwei Knoten, um Anfragen anzuzeigen, die diese Verbindung zurückgelegt haben.
-
-
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.
Weitere Informationen zum Verständnis von Röntgenspuren und zur Verwendung von X-Ray with Step Functions finden Sie im Trace Step Functions fordern Daten an in AWS X-Ray