Beispiel für ein Rückrufmuster (Amazon SQS, Amazon SNS, Lambda) - 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.

Beispiel für ein Rückrufmuster (Amazon SQS, Amazon SNS, Lambda)

Dieses Beispielprojekt zeigt, wie Sie während einer Aufgabe eine AWS Step Functions Pause einlegen und darauf warten können, dass ein externer Prozess ein Aufgaben-Token zurückgibt, das beim Start der Aufgabe generiert wurde.

Wenn dieses Beispielprojekt bereitgestellt wird und eine Ausführung gestartet wird, werden die folgenden Schritte ausgeführt:

  1. Step Functions leitet eine Nachricht, die ein Aufgaben-Token enthält, an eine Amazon Simple Queue Service (Amazon SQS) -Warteschlange weiter.

  2. Step Functions hält dann an und wartet darauf, dass das Token zurückgegeben wird.

  3. Die Amazon SQS SQS-Warteschlange löst eine AWS Lambda Funktion aus, die SendTaskSuccessmit demselben Task-Token aufgerufen wird.

  4. Wenn der Aufgabentoken empfangen wird, wird der Workflow fortgesetzt.

  5. Die "Notify Success" Aufgabe veröffentlicht eine Amazon Simple Notification Service (Amazon SNS) -Meldung, dass der Rückruf empfangen wurde.

Informationen zur Implementierung des Callback-Musters in Step Functions finden Sie unterWarten auf einen Callback mit dem Aufgabentoken.

Weitere Informationen darüber, wie AWS Step Functions Sie andere AWS Dienste steuern können, finden Sie unterVerwendung AWS Step Functions mit anderen Diensten.

Schritt 1: Erstellen Sie den Zustandsmaschine und stellen Sie Ressourcen bereit

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

  2. Geben Sie Callback pattern example etwas in das Suchfeld ein und wählen Sie dann aus den zurückgegebenen Suchergebnissen ein Beispiel für ein Callback-Muster aus.

  3. Wählen Sie Next (Weiter), um fortzufahren.

  4. Step Functions listet die Funktionen auf, die in dem von Ihnen ausgewählten Beispielprojekt AWS-Services verwendet wurden. Außerdem wird ein Workflow-Diagramm für das Beispielprojekt angezeigt. Stellen Sie dieses Projekt für Sie bereit AWS-Konto oder verwenden Sie es als Ausgangspunkt für die Erstellung Ihrer eigenen Projekte. Je nachdem, wie Sie vorgehen möchten, wählen Sie „Demo ausführen“ oder „Darauf aufbauen“.

    Dieses Beispielprojekt stellt die folgenden Ressourcen bereit:

    • Eine Amazon SQS SQS-Nachrichtenwarteschlange.

    • Eine Lambda-Funktion, die die API-Aktion SendTaskSuccessStep Functions aufruft.

    • Ein Amazon SNS SNS-Thema, das über den Erfolg oder Misserfolg einer Aufgabe informiert und angibt, ob der Workflow fortgesetzt werden kann oder nicht.

    • Eine AWS Step Functions Zustandsmaschine

    • Verwandte AWS Identity and Access Management Rollen (IAM)

    Die folgende Abbildung zeigt das Workflow-Diagramm für das Beispielprojekt mit einem Callback-Muster:

    
            Workflow-Diagramm des Beispielprojekts Manage a batch job.
  5. Wählen Sie Vorlage verwenden, um mit Ihrer Auswahl fortzufahren.

  6. Führen Sie eine der folgenden Aktionen aus:

    • Wenn Sie „Darauf aufbauen“ ausgewählt haben, erstellt Step Functions den Workflow-Prototyp für das von Ihnen ausgewählte Beispielprojekt. Step Functions stellt die in der Workflow-Definition aufgeführten Ressourcen nicht bereit.

      Ziehen Sie in Workflow Studio Status per Drag-and-Drop aus demEntwurfsmodus, Bundesstaaten-Browser um mit der Erstellung Ihres Workflow-Prototyps fortzufahren. Oder wechseln Sie zu demCodemodus, der einen integrierten Code-Editor bietet, der VS Code ähnelt, um die Amazon States Language (ASL-) Definition Ihrer Zustandsmaschine in der Step Functions Functions-Konsole zu aktualisieren. Weitere Informationen zur Verwendung von Workflow Studio zum Erstellen Ihrer Zustandsmaschinen finden Sie unterVerwenden von Workflow Studio.

      Wichtig

      Denken Sie daran, den Platzhalter Amazon Resource Name (ARN) für die im Beispielprojekt verwendeten Ressourcen zu aktualisieren, bevor Sie Ihren Workflow ausführen.

    • Wenn Sie Eine Demo ausführen ausgewählt haben, erstellt Step Functions ein schreibgeschütztes Beispielprojekt, das eine AWS CloudFormation Vorlage verwendet, um die in dieser Vorlage aufgeführten AWS Ressourcen für Ihr Projekt bereitzustellen. AWS-Konto

      Tipp

      Um die State-Machine-Definition des Beispielprojekts anzuzeigen, wählen Sie Code.

      Wenn Sie bereit sind, wählen Sie Deploy and run aus, um das Beispielprojekt bereitzustellen und die Ressourcen zu erstellen.

      Es kann bis zu 10 Minuten dauern, bis diese Ressourcen und die zugehörigen IAM-Berechtigungen erstellt sind. Während der Bereitstellung Ihrer Ressourcen können Sie den CloudFormation Stack-ID-Link öffnen, um zu sehen, welche Ressourcen bereitgestellt werden.

      Nachdem alle Ressourcen im Beispielprojekt erstellt wurden, wird das neue Beispielprojekt auf der Seite State Machines aufgeführt.

      Wichtig

      Für jeden in der CloudFormation Vorlage verwendeten Dienst können Standardgebühren anfallen.

Schritt 2: Führen Sie die Zustandsmaschine aus

  1. Wählen Sie auf der Seite State Machines Ihr Beispielprojekt aus.

  2. Wählen Sie auf der Seite mit dem Beispielprojekt die Option Ausführung starten aus.

  3. 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 Labels 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. (Optional) Geben Sie in das Eingabefeld Eingabewerte im JSON-Format ein, um Ihren Workflow auszuführen.

      Wenn Sie sich dafür entschieden haben, eine Demo auszuführen, müssen Sie keine Ausführungseingaben angeben.

      Anmerkung

      Wenn das von Ihnen bereitgestellte Demo-Projekt vorab aufgefüllte Eingabedaten für die Ausführung enthält, verwenden Sie diese Eingabe, um die Zustandsmaschine auszuführen.

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

    4. 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 oder nach Abschluss der Ausführung überprüfen.

      Um die Ausführungsergebnisse zu überprüfen, wählen Sie in der Diagrammansicht einzelne Status und dann die einzelnen Registerkarten im Schrittdetails Bereich aus, 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.

    Um beispielsweise zu überprüfen, wie Step Functions den Workflow durchlief und einen Rückruf von Amazon SQS erhalten hat, überprüfen Sie die Einträge in der Tabelle Ereignisse. Die folgende Abbildung zeigt die Ausführungsausgabe für den Schritt „Erfolg benachrichtigen“. Außerdem werden die ersten fünf Ereignisse aus dem Verlauf der Ausführungsereignisse angezeigt. Erweitern Sie jedes Ereignis, um weitere Details zu diesem Ereignis anzuzeigen.

    
            Auszug aus der Ausführungsausgabe für den Schritt „Erfolg benachrichtigen“, der in der Diagrammansicht ausgewählt wurde. Das Bild zeigt auch einen Auszug aus dem Verlauf der Ausführungsereignisse für das Beispielprojekt Callback-Muster.

Beispiel für einen Lambda-Callback

Um zu sehen, wie die Komponenten dieses Beispielprojekts zusammenarbeiten, sehen Sie sich die Ressourcen an, die in Ihrem AWS Konto bereitgestellt wurden. Hier ist zum Beispiel die Lambda-Funktion, die Step Functions mit dem Task-Token aufruft.

console.log('Loading function'); const aws = require('aws-sdk'); exports.lambda_handler = (event, context, callback) => { const stepfunctions = new aws.StepFunctions(); for (const record of event.Records) { const messageBody = JSON.parse(record.body); const taskToken = messageBody.TaskToken; const params = { output: "\"Callback task completed successfully.\"", taskToken: taskToken }; console.log(`Calling Step Functions to complete callback task with params ${JSON.stringify(params)}`); stepfunctions.sendTaskSuccess(params, (err, data) => { if (err) { console.error(err.message); callback(err.message); return; } console.log(data); callback(null); }); } };