Beispiel für eine Lambda-Orchestrierung - 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 eine Lambda-Orchestrierung

Dieses Beispielprojekt zeigt, wie AWS Lambda Funktionen in Step Functions Functions-Zustandsmaschinen integriert werden können.

In diesem Projekt verwendet Step Functions Lambda-Funktionen, um einen Aktienkurs zu überprüfen und eine Kauf- oder Verkaufsempfehlung zu ermitteln. Der Benutzer erhält dann diese Empfehlung und kann wählen, ob er die Aktie kaufen oder verkaufen möchte. Das Ergebnis des Handels wird unter Verwendung eines SNS-Themas zurückgegeben.

Weitere Informationen zu Step Functions Functions-Dienstintegrationen finden Sie im Folgenden:

Anmerkung

Für dieses Beispielprojekt können Gebühren anfallen.

Für neue AWS Benutzer ist ein kostenloses Nutzungskontingent verfügbar. Im Rahmen dieses Kontingents sind die Services bis zu einem bestimmten Nutzungsumfang kostenlos. Weitere Informationen zu den AWS Kosten und dem kostenlosen Kontingent finden Sie unter Preise.

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 Orchestrate Lambda functions etwas in das Suchfeld ein und wählen Sie dann aus den zurückgegebenen Suchergebnissen die Option LambdaFunktionen orchestrieren 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:

    • Fünf Funktionen Lambda

    • Eine Amazon Simple Queue Service-Warteschlange

    • Ein Amazon Simple Notification Service-Thema

    • Ein AWS Step Functions-Zustandsautomat

    • Zugehörige AWS Identity and Access Management (IAM)-Rollen

    Die folgende Abbildung zeigt das Workflow-Diagramm für das Beispielprojekt LambdaOrchestrate-Funktionen:

    Workflow-Diagramm des Beispielprojekts Orchestrate Lambda Functions.
  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

Nachdem alle Ressourcen bereitgestellt und bereitgestellt wurden, wird das Dialogfeld Ausführung starten angezeigt.

  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 Beschriftungen 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 aus und wählen Sie dann die einzelnen Registerkarten im Schrittdetails Bereich, 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.

Informationen zur Zustandsmaschine und ihrer Ausführung

Die Zustandsmaschine in diesem Beispielprojekt integriert sich in, AWS Lambda indem sie Parameter direkt an diese Ressourcen übergibt, verwendet eine Amazon SQS SQS-Warteschlange, um die Anfrage zur Genehmigung durch einen Mitarbeiter zu verwalten, und verwendet ein Amazon SNS SNS-Thema, um die Ergebnisse der Abfrage zurückzugeben.

Eine Step Functions Functions-Ausführung empfängt einen JSON-Text als Eingabe und übergibt diese Eingabe an den ersten Status im Workflow. Einzelne Staaten erhalten JSON-Daten als Eingabe und geben JSON-Daten normalerweise als Ausgabe an den nächsten Status weiter. In diesem Beispielprojekt wird die Ausgabe jedes Schritts als Eingabe an den nächsten Schritt im Workflow übergeben. Beispielsweise erhält der Schritt „Kauf-/Verkaufsempfehlung generieren“ die Ausgabe des Schritts „Aktienkurs prüfen“ als Eingabe. Außerdem wird die Ausgabe des Schritts „Kauf-/Verkaufsempfehlung generieren“ als Eingabe an den nächsten Schritt, „Genehmigung durch einen Mitarbeiter anfordern“, übergeben, der einem menschlichen Genehmigungsschritt nachempfunden ist.

Anmerkung

Um die von einem Schritt zurückgegebene Ausgabe und die an einen Schritt weitergeleiteten Eingaben anzuzeigen, öffnen Sie die Seite mit den Ausführungsdetails für Ihre Workflow-Ausführung. Sehen Sie sich im Abschnitt Schrittdetails die Eingabe und Ausgabe für jeden Schritt an, den Sie im Anzeigemodus auswählen.

Um einen menschlichen Genehmigungsschritt zu implementieren, unterbrechen Sie in der Regel die Workflow-Ausführung, bis ein Task-Token zurückgegeben wird. In diesem Beispielprojekt wird eine Nachricht an eine Amazon SQS SQS-Warteschlange übergeben, die als Auslöser für die Lambda-Funktion verwendet wird, die für die Verarbeitung der Callback-Funktionalität definiert ist. Die Nachricht enthält ein Task-Token und die vom vorherigen Schritt zurückgegebene Ausgabe. Die Lambda-Funktion wird mit der Nutzlast der Nachricht aufgerufen. Die Workflow-Ausführung wird angehalten, bis sie das Task-Token mit einem API-Aufruf zurückerhält. SendTaskSuccess Weitere Informationen zu Task-Token finden Sie unter. Warten auf einen Callback mit dem Aufgabentoken

Der folgende Code für die StepFunctionsSample-HelloLambda-ApproveSqsLambda Funktion zeigt, wie sie so definiert ist, dass alle Aufgaben, die von der Amazon SQS-Warteschlange über die Step Functions Functions-Zustandsmaschine eingereicht wurden, automatisch genehmigt werden.

exports.lambdaHandler = (event, context, callback) => { const stepfunctions = new aws.StepFunctions(); // For every record in sqs queue for (const record of event.Records) { const messageBody = JSON.parse(record.body); const taskToken = messageBody.TaskToken; const params = { output: "\"approved\"", taskToken: taskToken }; console.log(`Calling Step Functions to complete callback task with params ${JSON.stringify(params)}`); // Approve stepfunctions.sendTaskSuccess(params, (err, data) => { if (err) { console.error(err.message); callback(err.message); return; } console.log(data); callback(null); }); } };

Sehen Sie sich diese Beispiel-Zustandsmaschine an, um zu sehen, wie Step Functions Lambda und Amazon SQS steuert.

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

{ "StartAt": "Check Stock Price", "States": { "Check Stock Price": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-1:111122223333:function:StepFunctionsSample-HelloLam-CheckStockPriceLambda-444455556666", "Next": "Generate Buy/Sell recommendation" }, "Generate Buy/Sell recommendation": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-1:111122223333:function:StepFunctionsSample-Hello-GenerateBuySellRecommend-123456789012", "ResultPath": "$.recommended_type", "Next": "Request Human Approval" }, "Request Human Approval": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken", "Parameters": { "QueueUrl": "https://sqs.us-west-1.amazonaws.com/111122223333/StepFunctionsSample-HelloLambda4444-5555-6666-RequestHumanApprovalSqs-777788889999", "MessageBody": { "Input.$": "$", "TaskToken.$": "$$.Task.Token" } }, "ResultPath": null, "Next": "Buy or Sell?" }, "Buy or Sell?": { "Type": "Choice", "Choices": [ { "Variable": "$.recommended_type", "StringEquals": "buy", "Next": "Buy Stock" }, { "Variable": "$.recommended_type", "StringEquals": "sell", "Next": "Sell Stock" } ] }, "Buy Stock": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-1:111122223333:function:StepFunctionsSample-HelloLambda-BuyStockLambda-000000000000", "Next": "Report Result" }, "Sell Stock": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-1:111122223333:function:StepFunctionsSample-HelloLambda-SellStockLambda-111111111111", "Next": "Report Result" }, "Report Result": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:us-west-1:111122223333:StepFunctionsSample-HelloLambda1111-2222-3333-ReportResultSnsTopic-222222222222", "Message": { "Input.$": "$" } }, "End": true } } }

Informationen zur Konfiguration von IAM bei der Verwendung von Step Functions mit anderen AWS Diensten finden Sie unterIAM-Richtlinien für integrierte Dienste.

IAM-Beispiele

Diese vom Beispielprojekt generierten Beispielrichtlinien AWS Identity and Access Management (IAM) beinhalten die geringsten Rechte, die für die Ausführung der Zustandsmaschine und der zugehörigen Ressourcen erforderlich sind. Wir empfehlen, dass Sie nur die Berechtigungen in Ihre IAM-Richtlinien aufnehmen, die erforderlich sind.

{ "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-1:111122223333:function:StepFunctionsSample-HelloLam-CheckStockPriceLambda-444455556666", "Effect": "Allow" } ] }
{ "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-1:111122223333:function:StepFunctionsSample-Hello-GenerateBuySellRecommend-123456789012", "Effect": "Allow" } ] }
{ "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-1:111122223333:function:StepFunctionsSample-HelloLambda-BuyStockLambda-777788889999", "Effect": "Allow" } ] }
{ "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-1:111122223333:function:StepFunctionsSample-HelloLambda-SellStockLambda-000000000000", "Effect": "Allow" } ] }
{ "Statement": [ { "Action": [ "sqs:SendMessage*" ], "Resource": "arn:aws:sqs:us-west-1:111122223333:StepFunctionsSample-HelloLambda4444-5555-6666-RequestHumanApprovalSqs-111111111111", "Effect": "Allow" } ] }
{ "Statement": [ { "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:us-west-1:111122223333:StepFunctionsSample-HelloLambda1111-2222-3333-ReportResultSnsTopic-222222222222", "Effect": "Allow" } ] }

Informationen zur Konfiguration von IAM bei der Verwendung von Step Functions mit anderen AWS Diensten finden Sie unterIAM-Richtlinien für integrierte Dienste.