Tutorial: Untersuchen von Statusmaschinenausführungen mit der Step Functions Functions-Konsole - 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.

Tutorial: Untersuchen von Statusmaschinenausführungen mit der Step Functions Functions-Konsole

In diesem Tutorial erfahren Sie, wie Sie die Ausführungsinformationen überprüfen, die auf demDetails zur Ausführungund zeigen Sie den Grund für eine fehlgeschlagene Ausführung an. Dann erfahren Sie, wie Sie auf verschiedene Iterationen einesMapAusführung des Staates. Schließlich erfahren Sie, wie Sie die Spalten konfigurieren, die auf demTabellen-Ansichtund wenden Sie geeignete Filter an, um nur die Informationen von Interesse anzuzeigen.

Die in diesem Tutorial verwendete Zustandsmaschine erhält den Preis für eine Reihe von Früchten. Um dies zu tun, verwendet der Zustandsmaschine dreiAWS LambdaFunktionen, die eine zufällige Liste von vier Früchten, den Preis jeder Frucht und die durchschnittlichen Kosten der Früchte zurückgeben. Die Lambda-Funktionen sind so definiert, dass sie einen Fehler auslösen, wenn der Preis der Früchte kleiner oder gleich einem Schwellenwert ist.

Schritt 1: Erstellen und testen Sie die erforderlichen Lambda-Funktionen

  1. Öffnen SieLambda-Konsoleund führen Sie dann die Schritte 1 bis 4 imSchritt 1: Erstellen einer Lambda-FunktionAbschnitts erstellt. Benennen Sie unbedingt die Lambda-FunktionGetListOfFruitsaus.

  2. Kopieren Sie nach dem Erstellen der Lambda-Funktion den Amazon -Ressourcennamen (ARN) der -Funktion in der oberen rechten Ecke der Seite angezeigt. Um den ARN zu kopieren, klicken Sie auf 
                            icon to copy the Lambda function's Amazon Resource Name
                        aus. Es folgt ein Beispiel für einen ARN:

    arn:aws:lambda:us-east-1:123456789012:function:function-name
  3. Kopieren Sie folgenden Code für die Lambda-FunktionQuellcodeBereich desGetListoTruitsangezeigten.

    function getRandomSubarray(arr, size) { var shuffled = arr.slice(0), i = arr.length, temp, index; while (i--) { index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp; } return shuffled.slice(0, size); } exports.handler = async function(event, context) { const fruits = ['Abiu','Açaí','Acerola','Ackee','African cucumber','Apple','Apricot','Avocado','Banana','Bilberry','Blackberry','Blackcurrant','Jostaberry']; const errorChance = 45; const waitTime = Math.floor( 100 * Math.random() ); await new Promise( r => setTimeout(() => r(), waitTime)); const num = Math.floor( 100 * Math.random() ); // const num = 51; if (num <= errorChance) { throw(new Error('Error')); } return getRandomSubarray(fruits, 4); };
  4. Klicken Sie aufBereitstellenUnd dann wählen SieTestum die Änderungen bereitzustellen und die Ausgabe Ihrer Lambda-Funktion anzuzeigen.

  5. Erstellen Sie die verbleibenden zwei Lambda-Funktionen mit dem NamenGetFruitPriceundCalculateAveragemit folgenden Schritten:

    1. Kopieren Sie folgenden Code inQuellcodeBereich desgetFruitPriceLambda-Funktion:

      exports.handler = async function(event, context) { const errorChance = 0; const waitTime = Math.floor( 100 * Math.random() ); await new Promise( r => setTimeout(() => r(), waitTime)); const num = Math.floor( 100 * Math.random() ); if (num <= errorChance) { throw(new Error('Error')); } return Math.floor(Math.random()*100)/10; };
    2. Kopieren Sie folgenden Code in denQuellcodeBereich desCalculateAverageLambda-Funktion:

      function getRandomSubarray(arr, size) { var shuffled = arr.slice(0), i = arr.length, temp, index; while (i--) { index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp; } return shuffled.slice(0, size); } const average = arr => arr.reduce( ( p, c ) => p + c, 0 ) / arr.length; exports.handler = async function(event, context) { const errors = [ "Error getting data from DynamoDB", "Error connecting to DynamoDB", "Network error", "MemoryError - Low memory" ] const errorChance = 0; const waitTime = Math.floor( 100 * Math.random() ); await new Promise( r => setTimeout(() => r(), waitTime)); const num = Math.floor( 100 * Math.random() ); if (num <= errorChance) { throw(new Error(getRandomSubarray(errors, 1)[0])); } return average(event); };
    3. Kopieren Sie unbedingt die ARNs dieser beiden Lambda-Funktionen und dannBereitstellenundTestDiese.

Schritt 2: So erstellen Sie den Zustandsautomaten

Verwenden derStep Functions Function-KonsoleSo erstellen Sie einen -ZustandsautomatenLambda-Funktionen, die Sie in Schritt 1 erstellt habenaus. In dieser Zustandsmaschine dreiMapStaaten sind definiert. Jeder von diesenMapBundesstaaten enthält einTaskstatus, um jede der Lambda-Funktionen aufzurufen. Außerdem gilt einRetryFeld ist in jedem definiertTaskstate mit einer Reihe von Wiederholungsversuchen, die für jeden Status definiert sind. Wenn einTaskstate stößt auf einen Laufzeitfehler, er wird bis zur definierten Anzahl von Wiederholungsversuchen erneut ausgeführtTaskaus.

  1. Öffnen SieStep Functions Function-Konsoleund wähleSchreiben Sie Ihren Workflow in Codeaus.

    Wichtig

    Stellen Sie sicher, dass sich Ihr Zustandsautomat im selbenAWS-Konto und Region als Lambda-Funktion, die Sie zuvor erstellt haben.

  2. FürTypBehalten Sie im Feld die Standardauswahl beiStandard-aus.

  3. Kopieren Sie die folgende Sprachdefinition von Amazon States und fügen Sie sie unterDefinitionaus. Stellen Sie sicher, dass Sie die angezeigten ARNs durch die Lambda-Funktionen ersetzen, die Sie zuvor erstellt haben.

    { "StartAt": "LoopOverStores", "States": { "LoopOverStores": { "Type": "Map", "Iterator": { "StartAt": "GetListOfFruits", "States": { "GetListOfFruits": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:GetListofFruits:$LATEST", "Payload": { "storeName.$": "$" } }, "Retry": [ { "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 2, "MaxAttempts": 1, "BackoffRate": 1.3 } ], "Next": "LoopOverFruits" }, "LoopOverFruits": { "Type": "Map", "Iterator": { "StartAt": "GetFruitPrice", "States": { "GetFruitPrice": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:GetFruitPrice:$LATEST", "Payload": { "fruitName.$": "$" } }, "Retry": [ { "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 2, "MaxAttempts": 3, "BackoffRate": 1.3 } ], "End": true } } }, "ItemsPath": "$", "End": true } } }, "ItemsPath": "$.stores", "Next": "LoopOverStoreFruitsPrice", "ResultPath": "$.storesFruitsPrice" }, "LoopOverStoreFruitsPrice": { "Type": "Map", "End": true, "Iterator": { "StartAt": "CalculateAverage", "States": { "CalculateAverage": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:Calculate-average:$LATEST", "Payload.$": "$" }, "Retry": [ { "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 2, "MaxAttempts": 2, "BackoffRate": 1.3 } ], "End": true } } }, "ItemsPath": "$.storesFruitsPrice", "ResultPath": "$.storesPriceAverage", "MaxConcurrency": 1 } } }
  4. Geben Sie einen Namen für den Zustandsautomaten ein. Behalten Sie die Standardauswahl für die anderen Optionen auf der Seite bei und wählen Sie dannErstellen eines Zustandsautomatenaus.

  5. Öffnen Sie die Seite mit dem Namen Ihres Zustandsrechners. Führen Sie die Schritte 1 bis 4 imSchritt 4: Starten einer neuen Ausführung, verwenden Sie jedoch die folgenden Daten als Ausführungseingabe:

    { "stores": [ "Store A", "Store B", "Store C", "Store D" ] }

Schritt 3: Anzeigen der Ausführungsdetails des Zustandsautomaten

Auf der Seite mit Ihrer Ausführungs-ID können Sie die Ergebnisse Ihrer Ausführung und des Debugs überprüfenirgendeinFehler.

  1. (Optional) Wählen Sie aus den Registerkarten aus, die auf derDetails zur AusführungSeite zu sehendie Informationen, die in jedem von ihnen vorhanden sindaus. Um beispielsweise die Eingabe der Zustandsmaschine und ihre Ausführungsausgabe anzuzeigen, wählen SieAusführung Input & Outputauf derZusammenfassungAbschnitts erstellt.

  2. Wenn die Ausführung Ihres State-Rechners fehlgeschlagen ist, wählenUrsacheoderSchritt-Detail anzeigenauf die Fehlermeldung. Details zum Fehler werden imSchritt-DetailsAbschnitts erstellt. Beachten Sie, dass der betroffene Schritt, der einTaskBundesstaat benanntGetListoTruits, der dazu führte, dass der Fehler in derGraphen anzeigenundTabellen-Ansichtaus.

    Anmerkung

    Weil dieGetListoTruitsstep ist innerhalb einesMapstatus, und der Schritt konnte nicht erfolgreich ausgeführt werden, derStatusvonMapstatusschritt wird alsFehlgeschlagenaus.

Schritt 4: Erkunden des UnterschiedlichenAnzeigen von Modi

Sie können einen bevorzugten Modus wählen, um den Workflow der Statusmaschine oder den Ausführungsereignisverlauf anzuzeigen. Einige der Aufgaben, die Sie in diesen ausführen könnenAnzeigen von Modisind wie folgt festlegt:

Wenn IhreZuordnungstate hat fünf Iterationen und Sie möchten die Ausführungsdetails für die Iterationsnummer drei bzw. vier anzeigen, gehen Sie wie folgt vor:

  1. Wählen Sie das SymbolMap-Status, für den Sie die verschiedenen Iterationsdaten anzeigen möchten.

  2. AusZuordnungs-ViewerWählen Sie die Iteration aus, die Sie anzeigen möchten. Iterationen werden von Null gezählt. Um die dritte von fünf Iteration zu wählen, wählen Sie#2aus der Dropdown-Liste nebenZuordnungName des Bundesstaates.

    Anmerkung

    Wenn Ihr Zustandsautomat verschachtelte enthältMapstatus, die Dropdown-Listen für Eltern und KindMapStatusiterationen werden wie folgt angezeigt:

    
                                        Graphen anzeigen-Moduskomponenten'sZuordnungs-Viewer, mit einer Reihe von Dropdown-Listen, die die Iterationsdaten für verschachtelte darstellenMap-Staaten.
  3. (Optional) Wenn einer oder mehrere vonMapStatusiterationen konnten nicht ausgeführt werden oder die Iteration wurde in einem abgebrochenen Zustand beendet. Sie können Details über die fehlgeschlagene Iteration anzeigen. Um diese Details anzuzeigen, wählen Sie die betroffenen Iterationsnummern unterFehlgeschlagenoderAbortedIn der Dropdown-Liste.

Wenn IhreZuordnungstate hat fünf Iterationen und Sie möchten die Ausführungsdetails für die Iterationsnummer drei und vier anzeigen, gehen Sie wie folgt vor:

  1. Wählen Sie das SymbolMap-Status, für den Sie die verschiedenen Iterationsdaten anzeigen möchten.

  2. In der Baumansicht desMapStatusiterationen, wählen Sie die Zeile für die Iteration mit dem Namen#2für die Iteration Nummer drei. Wählen Sie auf ähnliche Weise die Zeile mit dem Namen#3für die Iteration Nummer vier.

Wählen Sie 
                                    Icon to configure columns to display in the
                                            Table view.
                                . Dann, imPräferenzenWählen Sie die Spalten aus, die Sie anzeigen möchtenWählen Sie sichtbare Spalten ausaus.

Standardmäßig zeigt dieser Modus dieName,Typ,Status,Ressource, undBegonnen nach-Spalten.

Beschränken Sie die Menge der angezeigten Informationen, indem Sie einen oder mehrere Filter basierend auf einer Eigenschaft anwenden, z.Statusoder einen Datums- und Zeitbereich. Um beispielsweise die Schritte anzuzeigen, die die Ausführung fehlgeschlagen haben, wenden Sie den folgenden Filter an:

  1. Klicken Sie aufNach Eigenschaften filtern oder nach Schlüsselwort suchenKlicken Sie auf und danach aufStatusunterEigenschaftenaus.

  2. UNDEROperatoren, wählenStatus =aus.

  3. Klicken Sie aufStatus = Fehlgeschlagenaus.

  4. (Optional) Wählen SieLöschen Sie Filterum die angewendeten Filter zu entfernen.

Beschränken Sie die Menge der angezeigten Informationen, indem Sie einen oder mehrere Filter basierend auf einer Eigenschaft anwenden, z.Typoder einen Datums- und Zeitbereich. So zeigen Sie beispielsweise dieTaskStatusschritte, die Ausführung fehlgeschlagen haben, wenden Sie den folgenden Filter an:

  1. Klicken Sie aufNach Eigenschaften filtern oder nach Schlüsselwort suchenKlicken Sie auf und danach aufTypunterEigenschaftenaus.

  2. UNDEROperatoren, wählenTyp =aus.

  3. Klicken Sie aufTyp = TaskFailedaus.

  4. (Optional) Wählen SieLöschen Sie Filterum die angewendeten Filter zu entfernen.

Wählen Sie das Symbol 
                            icon to show input and output details about a specific event
                                step that appears in a dropdown box
                        neben der ID einesTaskFailed-Ereignis, um seine Details zu überprüfen, einschließlich Eingabe, Ausgabe und Ressourcenaufruf, die in einem Dropdown-Feld angezeigt werden.