Beispiel für Callback-Muster (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 Callback-Muster (Amazon SQS, Amazon SNS, Lambda)

Dieses Beispielprojekt zeigt, wie Sie während einer Aufgabe AWS Step Functions anhalten und warten lassen, bis ein externer Prozess ein Aufgabentoken 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-Nachricht mit einem Aufgabentoken an eine Amazon-SQS-Warteschlange (Simple Queue Service).

  2. Step Functions wird dann angehalten und wartet darauf, dass dieses Token zurückgegeben wird.

  3. Die Amazon SQS SQS-Warteschlange löst einAWS LambdaEine -Funktion, die aufruftSendTaskSuccessmit demselben Aufgabentoken.

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

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

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

Weitere Informationen darüber, wie AWS Step Functions andere AWS-Services steuern kann, finden Sie unter Verwenden von AWS Step Functions mit sonstigen Services.

Erstellen des Zustandsautomaten und Bereitstellen von Ressourcen

  1. Öffnen SieStep Functions Konsoleund wähleErstellen eines Zustandsautomatenaus.

  2. Wählen Sie Sample Projects (Beispielprojekte), und klicken Sie dann auf Callback Pattern Exaple (Callback-Muster-Beispiel).

    Der Code und der Visual Workflow des Zustandsautomaten werden angezeigt.

    
          Callback-Beispiel-Workflow.
  3. Wählen Sie Create Sample Project (Beispielprojekt erstellen).

    Die Seite Create Project Resources (Projektressourcen erstellen) wird angezeigt und listet die Ressourcen auf, die erstellt werden. Die Ressourcen für dieses Beispielprojekt sind u.a.:

    • Eine Amazon SQS SQS-Nachrichtenwarteschlange.

    • Eine Lambda-Funktion, die die Step Functions Functions-API-Aktion aufruftSendTaskSuccessaus.

    • Ein Amazon SNS-Thema zur Meldung von Erfolg oder Fehlschlag, wenn der Workflow fortgesetzt werden kann.

    Anmerkung

    Es kann bis zu 10 Minuten dauern, bis diese Ressourcen und dazu gehörende IAM-Berechtigungen erstellt werden. Wenn die Seite Create Project Resources (Projektressourcen erstellen) Creating resources (Erstellen von Ressourcen) anzeigt, können Sie den Link Stack ID: (Stack-ID:) öffnen, um zu sehen, welche Ressourcen bereitgestellt werden.

    Wenn dieser Vorgang abgeschlossen ist, wird die Seite New execution (Neue Ausführung) angezeigt.

  4. (Optional) Geben Sie einen Namen für die Ausführung und eine Beispieleingabe ein.

    
          Starten einer Callback-Ausführung
  5. Wählen Sie Start Execution aus.

    Eine neue Ausführung Ihres Zustandsautomaten startet und eine neue Seite mit Ihrer laufenden Ausführung wird angezeigt.

    
          Callback-Ausführung
  6. Um zu prüfen, wie Step Functions Functions-Aktionen durch den Workflow läuft und einen Callback von Amazon SQS erhalten hat, prüfen Sie die Einträge unterEreignisverlauf der Ausführungaus.

Beispiel für Lambda-Callback-Beispiel

Um zu erfahren, wie die Komponenten dieses Beispielprojekts zusammenarbeiten, finden Sie in den Ressourcen, die in IhremAWSKonto. Hier ist beispielsweise die Lambda-Funktion, die Step Functions mit dem Aufgabentoken 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); }); } };