Fügen Sie Ihrem Step Functions Functions-Workflow bedingte Logik hinzu - 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.

Fügen Sie Ihrem Step Functions Functions-Workflow bedingte Logik hinzu

Im vorherigen Thema haben Sie eine Lambda-Funktion integriert. Integrieren Sie einen Service In diesem Thema richten Sie die If-Else-Bedingungen in der ein. Choice state Ein Auswahlstatus bestimmt den Ausführungspfad des Workflows auf der Grundlage bestimmter Bedingungen.

Sie werden eine Logik hinzufügen, die einen Pfad auf der Grundlage des von der RandomNumberforCredit Lambda-Funktion zurückgegebenen Kreditbetrags auswählt. Liegt der Wert innerhalb eines Schwellenwerts, wird der Kreditantrag automatisch genehmigt und mit dem nächsten Schritt fortgefahren. Wenn der Wert den Schwellenwert überschreitet, benötigt der Workflow eine Genehmigung durch einen Mitarbeiter, um den Workflow fortzusetzen.

Sie ahmen einen menschlichen Interaktionsschritt nach, indem Sie die Workflow-Ausführung unterbrechen, bis ein Task-Token zurückgegeben wird. Dazu übergeben Sie ein Aufgabentoken an AWS SDKIntegration mit Amazon Simple Notification Service. Die Workflow-Ausführung wird angehalten, bis das Task-Token mit einem SendTaskSuccessAPIAufruf zurückgesendet wird. Informationen zur Integration mit anderen Diensten mithilfe von Task-Token finden Sie Warten Sie auf einen Rückruf mit Task Token in den Integrationsmustern für Dienste.

Bei der Erstellung des Prototyps der Zustandsmaschine haben Sie Schritte für die menschliche Genehmigung und die automatische Genehmigung definiert. Jetzt müssen Sie ein SNS Amazon-Thema erstellen, das das Callback-Token empfängt. Anschließend erstellen Sie eine Lambda-Funktion, um die Callback-Funktionalität zu implementieren. Schließlich aktualisieren Sie Ihren Workflow-Prototyp, indem Sie die folgenden Details hinzufügen AWS-Service Integrationen.

Schritt 1: Erstellen Sie ein SNS Amazon-Thema, das das Callback-Token erhält

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

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

  2. Geben Sie den Namen des Themas als anTaskTokenTopic.

  3. Achten Sie darauf, das Thema zu kopieren ARN und in einer Textdatei zu speichern. Sie benötigen das Thema ARN bei der Angabe der Serviceintegration für den Status Warte auf menschliche Genehmigung. Im Folgenden finden Sie ein BeispielthemaARN:

    arn:aws:sns:us-east-2:123456789012:TaskTokenTopic
  4. Erstellen Sie ein E-Mail-basiertes 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 zur Verarbeitung des Callbacks

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

Schritt 2.1: Erstellen Sie die Lambda-Funktion für die Verarbeitung von Rückrufen

In dieser Funktion bearbeiten Sie die Anfrage zur Genehmigung des Kreditlimits und geben das Ergebnis der Anfrage als erfolgreich mit dem SendTaskSuccessAPIAnruf zurück. Diese Lambda-Funktion gibt auch das Task-Token zurück, das sie vom SNS Amazon-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 als callback-human-approval benennen.

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

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

    // Lambda function that will automatically approve any task // in a message published to an Amazon SNS topic console.log('Loading function'); const AWS = require('aws-sdk'); const resultMessage = "Successful"; export const handler = async (event) => { 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 für weitere Aktionen aus.

Schritt 2.2: Fügen Sie das SNS Amazon-Thema als Auslöser für die Lambda-Funktion hinzu

Wenn Sie mit einem Task-Token im SNS Amazon-Thema veröffentlichen, wird die Lambda-Funktion mit der Nutzlast der veröffentlichten Nachricht aufgerufen. Weitere Informationen zur Konfiguration von Triggern für Lambda-Funktionen finden Sie unter Konfiguration von Triggern in der AWS Lambda Entwicklerhandbuch.

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

  2. Wählen Sie in der Dropdownliste der Auslöser die Option SNSals Auslöser aus.

  3. Geben Sie als SNSThema den Namen des SNS Amazon-Themas ein, das Sie in Schritt 1 dieses Tutorials erstellt haben, und wählen Sie es aus der angezeigten Drop-down-Liste aus.

  4. Wählen Sie Hinzufügen aus.

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

Schritt 2.3: Geben Sie die erforderlichen Berechtigungen für die IAM Lambda-Funktionsrolle ein

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 zum AWS Identity and Access Management Die Rollenseite der Konsole.

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

  4. Geben Sie in das Suchfeld 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 erforderlichen Berechtigungen für die callback-human-approval Lambda-Funktionsrolle enthält.

Schritt 3: Aktualisieren Sie den Workflow — fügen Sie die If-Else-Bedingungslogik im Status Choice hinzu

Definieren Sie in der Step Functions Functions-Konsole die bedingte Logik für Ihren Workflow mithilfe des Choice Status. Wenn die von der RandomNumberforCredit Lambda-Funktion zurückgegebene Ausgabe weniger als 5000 beträgt, wird das angeforderte Guthaben automatisch genehmigt. Wenn die zurückgegebene Ausgabe 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 beim Starten einer State-Machine-Ausführung als Ausführungseingabe angeben oder die Ausgabe eines vorherigen Schritts als Eingabe für den aktuellen Schritt verwenden. Standardmäßig wird die Ausgabe eines Schritts in einer Variablen namens gespeichertPayload. 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 dazu, wie Informationen von einem Status in einen anderen fließen, und zur Angabe von Eingabe und Ausgabe in Ihren Workflows finden Sie unter Eingabe und Ausgabe konfigurieren undEingabe und Ausgabe verarbeiten.

Anmerkung

Wenn der Choice Status eine Eingabevariable verwendet, die in der Eingabe der State-Machine-Ausführung für den Vergleich angegeben ist, verwenden Sie die $.variable_name Syntax, um den Vergleich durchzuführen. Um beispielsweise eine Variable zu vergleichenmyAge, verwenden Sie die Syntax$.myAge.

Da der Choice Bundesstaat in diesem Schritt Eingaben aus dem Status „Kreditlimit abrufen“ erhält, verwenden Sie die $ Syntax für die Choice Statuskonfiguration. Informationen darüber, wie sich das Ergebnis der State-Machine-Ausführung unterscheidet, wenn Sie die $.variable_name Syntax in der Choice State-Konfiguration verwenden, um auf die Ausgabe eines vorherigen Schritts zu verweisen, finden Sie im Debuggen des Fehlers mit ungültigem Pfadauswahlstatus Abschnitt in Tutorial 8.

Um mithilfe des Zustands eine If-Else-Bedingungslogik hinzuzufügen Choice
  1. Öffnen Sie das Step Functions Functions-Konsolenfenster, das den Workflow-Prototyp enthält, in dem Sie ihn erstellt habenErstellen eines Zustandsautomaten.

  2. Wählen Sie die angewendete Gutschrift >= 5000? Status und geben Sie auf der Registerkarte „Konfiguration“ die bedingte Logik wie folgt an:

    1. Wählen Sie unter Auswahlregeln das Symbol Bearbeiten in der Kachel Regel #1 aus, um die Regel für die erste Wahl zu definieren.

    2. Wählen Sie Bedingungen hinzufügen.

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

    4. Wählen Sie für Operator ist kleiner als.

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

    6. Wählen Sie Bedingungen speichern aus.

    7. Wählen Sie in der Dropdownliste Dann ist der nächste Status: die Option Limit automatisch genehmigen aus.

    8. Wählen Sie Neue Wahlregel hinzufügen und definieren Sie dann die Regel zweiter Wahl, wenn der Kreditbetrag mindestens 5000 beträgt, indem Sie die Teilschritte 2.b bis 2.f wiederholen. Wählen Sie für Operator die Option ist größer oder gleich.

    9. Wählen Sie für die Dropdownliste Dann ist der nächste Status: die Option Auf menschliche Zustimmung 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 Zustimmung durch einen Mitarbeiter warten aus. Sie definieren die Standardregel, um den nächsten Status anzugeben, in den übergegangen werden soll, wenn keine der Auswahlstatusbedingungen als wahr oder falsch bewertet wird.

  3. Konfigurieren Sie den Status „Auf Genehmigung durch einen Mitarbeiter warten“ wie folgt:

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

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

      Mit einem Task-Token können Sie einen Step Functions 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 .waitForTaskTokenDiensteintegrationsmuster angeben, wird ein Task-Token generiert und beim Starten der Aufgabe in das Kontextobjekt eingefügt. Das Kontextobjekt ist eine interne JSON Struktur, die während einer Ausführung verfügbar ist und Informationen über Ihre Zustandsmaschine 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. Aktivieren Sie das Kontrollkästchen Auf Rückruf warten.

    5. Wählen Sie im daraufhin angezeigten Dialogfeld „Fertig“.

  4. Lassen Sie dieses Fenster geöffnet und fahren Sie mit dem nächsten Thema fort.

Nächste Schritte

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