Tutorial 3: Implementieren Sie eine If-else-Bedingung in Ihrem Workflow - 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 3: Implementieren Sie eine If-else-Bedingung in Ihrem Workflow

Sie können if-else-Bedingungen in Ihren Workflows implementieren, indem Sie den Choice Status verwenden. Es bestimmt den Workflow-Ausführungspfad basierend darauf, ob eine angegebene Bedingung als wahr oder falsch bewertet wird.

In diesem Tutorial fügen Sie eine Bedingungslogik hinzu, um festzustellen, ob der von der in Tutorial 2 verwendeten RandomNumberforCredit Lambda-Funktion zurückgegebene Kreditbetrag einen bestimmten Schwellenwert überschreitet. Wenn der Betrag den Schwellenwert überschreitet, ist für die Genehmigung des Antrags eine menschliche Interaktion erforderlich. Andernfalls wird der Antrag automatisch genehmigt und es wird mit dem nächsten Schritt fortgefahren.

Sie ahmen den Schritt der menschlichen Interaktion nach, indem Sie die Workflow-Ausführung unterbrechen, bis ein Task-Token zurückgegeben wird. Dazu übergeben Sie ein Task-Token an die AWS SDK-Integration, die Sie in diesem Tutorial verwenden werden, nämlich Amazon Simple Notification Service. Die Workflow-Ausführung wird unterbrochen, bis das Task-Token mit einem SendTaskSuccessAPI-Aufruf zurückgesendet wird. Weitere Hinweise zur Verwendung von Task-Token finden Sie unterWarten auf einen Callback mit dem Aufgabentoken.

Da Sie die Schritte für die Genehmigung durch einen Menschen und die automatische Genehmigung bereits in Ihrem Workflow-Prototyp definiert haben, erstellen Sie in diesem Tutorial zunächst ein Amazon SNS-Thema, das das Callback-Token erhält. Anschließend erstellen Sie eine Lambda-Funktion, um die Callback-Funktionalität zu implementieren. Schließlich aktualisieren Sie Ihren Workflow-Prototyp, indem Sie die Details dieser AWS-Service Integrationen hinzufügen.

Schritt 1: Erstellen Sie ein Amazon SNS-Thema, das das Callback-Token empfängt

Um den Schritt der menschlichen Interaktion zu implementieren, veröffentlichen Sie in einem Amazon Simple Notification Service-Thema und übergeben das Callback-Task-Token an dieses Thema. Die Callback-Aufgabe unterbricht die Workflow-Ausführung, bis das Task-Token mit einer Payload zurückgegeben wird.

  1. Öffnen Sie die Amazon SNS-Konsole und erstellen Sie einen Standard-Thementyp. Informationen zum Erstellen eines Themas finden Sie unter Erstellen eines Amazon SNS-Themas im Amazon Simple Notification Service Developer Guide.

  2. Geben Sie den Themennamen als anTaskTokenTopic.

  3. Achten Sie darauf, das Thema ARN zu kopieren und in einer Textdatei zu speichern. Sie benötigen das Thema ARN, wenn Sie die Dienstintegration für den Status Wait for human approval angeben. Im Folgenden finden Sie ein Beispielthema ARN:

    arn:aws:sns:us-east-2:123456789012:TaskTokenTopic
  4. Erstellen Sie ein E-Mail-Abonnement für das Thema und bestätigen Sie dann Ihr Abonnement. Informationen zum Abonnieren eines Themas finden Sie unter Erstellen eines Abonnements für das Thema im Amazon Simple Notification Service Developer Guide.

Schritt 2: Erstellen Sie eine Lambda-Funktion, um den Callback zu verarbeiten

Um die Callback-Funktionalität zu handhaben, definieren Sie eine Lambda-Funktion und fügen das Amazon SNS-Thema, das Sie in Schritt 1 erstellt haben, als Trigger für diese Funktion hinzu. Wenn Sie mit einem Task-Token im Amazon SNS-Thema veröffentlichen, wird die Lambda-Funktion mit der Payload der veröffentlichten Nachricht aufgerufen.

Schritt 2.1: Erstellen Sie die Lambda-Funktion für den Callback

In dieser Funktion bearbeiten Sie die Anfrage zur Genehmigung des Kreditlimits und geben das Ergebnis der Anfrage mit dem SendTaskSuccessAPI-Aufruf als erfolgreich zurück. Diese Lambda-Funktion gibt auch das Task-Token zurück, das sie vom Amazon SNS-Thema erhalten hat.

Der Einfachheit halber genehmigt die Lambda-Funktion, die für den Schritt der menschlichen Interaktion verwendet wird, automatisch jede Aufgabe und gibt das Task-Token mit einem SendTaskSuccess API-Aufruf zurück. Sie können die Lambda-Funktion benennen alscallback-human-approval.

  1. Öffnen Sie in einem neuen Tab oder Fenster die Lambda-Konsole und erstellen Sie eine Node.js 16.x Lambda-Funktion mit dem Titel. callback-human-approval Informationen zum Erstellen einer Lambda-Funktion mithilfe der Konsole finden Sie im AWS LambdaEntwicklerhandbuch unter Erstellen einer Lambda-Funktion in der Konsole.

  2. Ersetzen Sie auf der callback-human-approvalSeite den vorhandenen Code im Bereich Codequelle durch den folgenden Code.

    // Sample Lambda function that will automatically approve any task whenever a message is published to an Amazon SNS topic by Step Functions. console.log('Loading function'); const AWS = require('aws-sdk'); const resultMessage = "Successful"; exports.handler = async (event, context) => { const stepfunctions = new AWS.StepFunctions(); let message = JSON.parse(event.Records[0].Sns.Message); let taskToken = message.TaskToken; console.log('Message received from SNS:', message); console.log('Task token: ', taskToken); // Return task token to Step Functions let params = { output: JSON.stringify(resultMessage), taskToken: taskToken }; console.log('JSON Returned to Step Functions: ', params); let myResult = await stepfunctions.sendTaskSuccess(params).promise(); console.log('State machine - callback completed..'); return myResult; };
  3. Lassen Sie dieses Fenster geöffnet und führen Sie die Schritte im nächsten Abschnitt aus, um weitere Aktionen durchzuführen.

Schritt 2.2: Hinzufügen des Amazon SNS-Themas als Trigger für die Lambda-Funktion

Wenn Sie das Amazon SNS-Thema, das Sie in Schritt 1 dieses Tutorials erstellt haben, als Trigger für die Lambda-Funktion hinzufügen, die Sie in Schritt 2.1 dieses Tutorials erstellt haben, wird die Lambda-Funktion bei jeder Veröffentlichung zum Amazon SNS-Thema ausgelöst. Wenn Sie mit einem Task-Token im Amazon SNS-Thema veröffentlichen, wird die Lambda-Funktion mit der Payload der veröffentlichten Nachricht aufgerufen. Weitere Informationen zur Konfiguration von Triggern für Lambda-Funktionen finden Sie unter Konfiguration von Triggern im AWS LambdaDeveloper Guide.

  1. Wählen Sie im Abschnitt Funktionsübersicht der callback-human-approval Lambda-Funktion die Option Trigger hinzufügen.

  2. Wählen Sie aus der Dropdownliste der Trigger SNS als Trigger aus.

  3. Geben Sie für das SNS-Thema den Namen des Amazon SNS-Themas ein, das Sie in Schritt 1 dieses Tutorials erstellt haben, und wählen Sie es aus der angezeigten Dropdown-Liste aus.

  4. Wählen Sie Add (Hinzufügen) aus.

  5. Lassen Sie dieses Fenster geöffnet und führen Sie die Schritte im nächsten Abschnitt aus, um weitere Aktionen durchzuführen.

Schritt 2.3: Bereitstellung der erforderlichen Berechtigungen für die IAM-Rolle der Lambda-Funktion

Sie müssen der callback-human-approval Lambda-Funktion die Berechtigungen für den Zugriff auf Step Functions gewähren, um das Task-Token zusammen mit dem SendTaskSucess API-Aufruf zurückzugeben.

  1. Wählen Sie auf der callback-human-approvalSeite die Registerkarte Konfiguration und dann Berechtigungen aus.

  2. Wählen Sie unter Ausführungsrolle den Rollennamen aus, um zur Rollenseite der AWS Identity and Access Management Konsole zu gelangen.

  3. Um die erforderliche Berechtigung hinzuzufügen, wählen Sie Berechtigungen hinzufügen und dann Richtlinien anhängen.

  4. Geben Sie in das Suchfeld den Text ein AWSStepFunctions und drücken Sie dann die Eingabetaste.

  5. Wählen Sie AWSStepFunctionsFullAccessund scrollen Sie dann nach unten, um Richtlinien anhängen auszuwählen. Dadurch wird die Richtlinie hinzugefügt, die die erforderliche Berechtigung für die callback-human-approval Lambda-Funktionsrolle enthält.

Schritt 3: Aktualisieren Sie den Workflow — fügen Sie im Status Auswahl die Bedingungslogik if-else hinzu

Definieren Sie in der Step Functions-Konsole die Bedingungslogik für Ihren Workflow mithilfe des Choice Status. Wenn die von der RandomNumberforCredit Lambda-Funktion zurückgegebene Ausgabe weniger als 5000 beträgt, wird die angeforderte Gutschrift automatisch genehmigt. Wenn die zurückgegebene Leistung größer oder gleich 5000 ist, geht die Workflow-Ausführung zum Schritt der menschlichen Interaktion über, um das Kreditlimit zu genehmigen.

Im Choice Bundesstaat verwenden Sie einen Vergleichsoperator, um eine Eingabevariable mit einem bestimmten Wert zu vergleichen. Sie können die Eingabevariable als Ausführungseingabe angeben, während Sie eine State-Machine-Ausführung starten, oder die Ausgabe eines vorherigen Schritts als Eingabe für den aktuellen Schritt verwenden. Standardmäßig wird die Ausgabe eines Schritts in einer Variablen gespeichert, die aufgerufen wirdPayload. Um den Wert der Payload Variablen für den Vergleich im Choice Status zu verwenden, verwenden Sie die $ Syntax, wie im folgenden Verfahren gezeigt.

Informationen darüber, wie Informationen von einem Zustand in einen anderen fließen und wie Eingabe und Ausgabe in Ihren Workflows spezifiziert werden, finden Sie unter Tutorial 7: Eingabe und Ausgabe konfigurieren undEingabe- und Ausgabeverarbeitung in Step Functions.

Anmerkung

Wenn der Choice Status eine in der Eingabe der State-Machine-Ausführung angegebene Eingabevariable für den Vergleich verwendet, verwenden Sie die $.variable_name Syntax, um den Vergleich durchzuführen. Verwenden Sie zum Beispiel die Syntax, um eine Variable zu vergleichen$.myAge. myAge

Da der Choice Bundesstaat in diesem Schritt Eingaben aus dem Status Get credit limit erhält, verwenden Sie die $ Syntax für die Choice Status-Konfiguration. Im Fehler beim Debuggen des ungültigen Pfades; Auswahlstatusfehler Abschnitt in Tutorial 8 erfahren Sie, wie sich das Ergebnis der State-Machine-Ausführung unterscheidet, wenn Sie die $.variable_name Choice Syntax in der State-Konfiguration verwenden, um auf die Ausgabe aus einem vorherigen Schritt zu verweisen.

Um die If-else-Bedingungslogik mithilfe des Zustands hinzuzufügen Choice
  1. Öffnen Sie das Step Functions-Konsolenfenster, das den Workflow-Prototyp enthält, in dem Sie erstellt habenTutorial 1: Erstellen Sie den Prototyp für Ihre Zustandsmaschine.

  2. Wählen Sie den beantragten Kredit >= 5000? Status und geben Sie auf der Registerkarte Konfiguration die Bedingungslogik wie folgt an:

    1. Wählen Sie unter Auswahlregeln das Symbol Bearbeiten in der Kachel Regel #1 aus, um die First-Choice-Regel zu definieren.

    2. Wählen Sie Bedingungen hinzufügen aus.

    3. Geben Sie im Dialogfeld Bedingungen für Regel #1 für Variable den folgenden Text ein$.

    4. Für Operator ist die Auswahl kleiner als.

    5. Wählen Sie für Wert die Option Zahlenkonstante aus, und geben Sie dann 5000 in das Feld neben der Dropdownliste Wert ein.

    6. Wählen Sie Bedingungen speichern.

    7. Wählen Sie in der Dropdown-Liste Dann nächster Status ist: die Option Limit automatisch genehmigen aus.

    8. Wählen Sie Neue Auswahlregel hinzufügen aus, und definieren Sie dann die Regel der zweiten Wahl, wenn der Kreditbetrag größer oder gleich 5000 ist, indem Sie die Teilschritte 2.b bis 2.f wiederholen. Wählen Sie für Operator ist größer als oder gleich.

    9. Wählen Sie in der Dropdown-Liste Dann nächster Status ist: die Option Auf menschliche Genehmigung warten aus.

    10. Wählen Sie im Feld Standardregel das Symbol Bearbeiten aus, um die Standardauswahlregel zu definieren, und wählen Sie dann in der Dropdownliste Standardstatus die Option Auf Genehmigung durch einen Mitarbeiter warten aus. Sie definieren die Standardregel, um den nächsten Status anzugeben, zu dem der Übergang erfolgen soll, falls keine der Auswahlstatusbedingungen als wahr oder falsch bewertet wird.

  3. Konfigurieren Sie den Status „Auf menschliche Genehmigung warten“ wie folgt:

    1. Geben Sie auf der Registerkarte Konfiguration unter Thema den Namen des Amazon SNS-Themas ein und wählen Sie den Namen aus TaskTokenTopic, der in der Dropdownliste angezeigt wird.

    2. Wählen Sie für Nachricht die Option Nachricht eingeben aus der Dropdownliste aus. Im Feld Nachricht geben Sie die Nachricht an, die Sie zum Amazon SNS-Thema veröffentlichen möchten. In diesem Tutorial veröffentlichen Sie ein Task-Token als Nachricht.

      Mit einem Task-Token können Sie einen Step Functions-Workflow vom Typ Standard unterbrechen, bis ein externer Prozess abgeschlossen ist und das Task-Token zurückgegeben wird. Wenn Sie einen Task-Status als Callback-Aufgabe angeben, indem Sie das .waitForTaskTokenService-Integrationsmuster angeben, wird ein Task-Token generiert und in das Kontextobjekt eingefügt, wenn die Aufgabe gestartet wird. Das Kontextobjekt ist eine interne JSON-Struktur, die während einer Ausführung verfügbar ist und Informationen über Ihre State-Maschine und deren Ausführung enthält. Weitere Hinweise zu Kontextobjekten finden Sie unterContext-Objekt.

    3. Geben Sie in das angezeigte Feld Folgendes als Nachricht ein:

      { "TaskToken.$": "$$.Task.Token" }
    4. Markieren Sie das Kontrollkästchen Auf Rückruf warten.

    5. Wählen Sie im daraufhin angezeigten Dialogfeld die Option Fertig aus.

  4. Lassen Sie dieses Fenster geöffnet und fahren Sie mit dem nächsten Tutorial fort, um weitere Aktionen zu erhalten.

Nächste Schritte

Im nächsten Tutorial erfahren Sie, wie Sie mehrere Aufgaben parallel ausführen.