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

Dieses Beispielprojekt zeigt, wie man integriertAWS Lambda-Funktionen in Step Functions Zustandsautomaten. Dieses Beispielprojekt erstellt die folgenden Ressourcen:

  • Fünf Lambda-Funktionen

  • Amazon Simple Queue Service Warteschlange

  • Amazon Simple Notification Service-Thema

  • VerwandtAWS Identity and Access Management(IAM) -Rollen

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 über Step Functions Functions-Dienstintegrationen finden Sie in folgenden Themen:

Anmerkung

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

Für neue AWS-Benutzer steht ein kostenloses Nutzungskontingent zur Verfügung. Im Rahmen dieses Kontingents sind die Services bis zu einem bestimmten Nutzungsumfang kostenlos. Weitere Informationen zuAWSKosten und das kostenlose Kontingent, siehePreise.

Erstellen des Zustandsautomaten und Bereitstellen von Ressourcen

  1. Öffnen Sie denStep Functions Konsoleund wähleErstellen eines Zustandsautomaten.

  2. Auf derWählen Sie die AutorenmethodeSeite, wählenAusführen eines Beispielprojekts.

  3. WählenOrchestrieren von Lambda-Funktionen.

    Die StaatsmaschineDefinitionundVisueller Arbeitsablaufwerden angezeigt.

    
            Schulungsmodell-Workflow.
  4. Wählen Sie Next (Weiter).

    Die Seite Deploy resources (Ressourcen bereitstellen) wird angezeigt und listet die Ressourcen auf, die erstellt werden. Die Ressourcen für dieses Beispielprojekt:

    • Ein -Zustandsautomat

    • Eine Amazon-SQS-Warteschlange

    • Fünf Lambda-Funktionen

    • Amazon-SNS-Thema

    • Verwandte IAM roles

  5. Wählen Sie Deploy Resources (Ressourcen bereitstellen) aus.

    Anmerkung

    Es kann bis zu 10 Minuten dauern, bis diese Ressourcen und zugehörigen IAM-Berechtigungen erstellt werden. Wenn die Seite Deploy resources (Ressourcen bereitstellen) anzeigt wird, können Sie den Link Stack ID (Stack-ID) öffnen, um zu sehen, welche Ressourcen bereitgestellt werden.

Starten einer neuen Ausführung

Nachdem alle Ressourcen bereitgestellt und bereitgestellt wurden, wird derStarten der Ausführungwird angezeigt.

  1. (Optional) Um Ihre Ausführung zu identifizieren, können Sie einen Namen dafür im FeldNameKiste. Standardmäßig generiert Step Functions automatisch einen eindeutigen Ausführungsnamen.

    Anmerkung

    Mit Step Functions können Sie Zustandsautomaten-, Ausführungs- und Aktivitätsnamen erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit Amazon CloudWatch. Um sicherzustellen, dass Sie verfolgen können CloudWatch Metriken, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

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

  3. (Optional) Wählen Sie nach Abschluss der Ausführung einzelne Status auf derDiagramminspektorund dann dieStep InputundStep-AusgabeRegisterkarten, um die Eingabe bzw. Ausgabe der einzelnen Bundesstaaten anzuzeigen.

Über den Zustandsautomaten und ihre Ausführung

Die Zustandsmaschine in diesem Beispielprojekt integriert sich inAWS Lambdaindem Parameter direkt an diese Ressourcen übergeben werden, verwendet eine Amazon SQS SQS-Warteschlange, um die Anforderung einer menschlichen Genehmigung zu verwalten, und verwendet ein Amazon 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 Zustand im Workflow. Einzelne Zustände empfangen JSON-Daten als Eingabe und übergeben normalerweise JSON-Daten als Ausgabe an den nächsten Zustand. In diesem Beispielprojekt wird die Ausgabe jedes Schritts als Eingabe an den nächsten Schritt im Workflow übergeben. Beispiel, derKauf-/Verkaufsempfehlung generierenstep empfängt die Ausgabe desÜberprüfen Sie den AktienkursSchritt als Eingabe. Darüber hinaus ist die Ausgabe desKauf-/Verkaufsempfehlung generieren-Schritt wird als Eingabe an den nächsten Schritt übergeben,Beantragung einer menschlichen Genehmigung, das einen Schritt der menschlichen Zustimmung nachahmt.

Anmerkung

Um die von einem Schritt zurückgegebene Ausgabe und die an einen Schritt übergebene Eingabe anzuzeigen, öffnen Sie dasAusführungsdetailsSeite für die Ausführung Ihres Workflows. In derEinzelheiten der Schrittezeigen Sie die Eingabe und Ausgabe für jeden Schritt an, den Sie in derView-Modus.

Um einen menschlichen Genehmigungsschritt zu implementieren, unterbrechen Sie normalerweise 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 Trigger für die Lambda-Funktion verwendet wird, die für die Verarbeitung der Callback-Funktionalität definiert wurde. Die Nachricht enthält ein Task-Token und die vom vorherigen Schritt zurückgegebene Ausgabe. Die Lambda-Funktion wird mit der Payload der Nachricht aufgerufen. Die Workflow-Ausführung wird angehalten, bis das Task-Token mit einemSendTaskSuccessAPI Call. Weitere Hinweise zu Task-Tokens finden Sie unterWarten auf einen Callback mit dem Aufgabentoken.

Mit folgendem Code für denStepFunctionsSample-HelloLambda-ApproveSqsLambdazeigt an, wie sie definiert ist, um Aufgaben, die von der Amazon SQS SQS-Warteschlange über die Statusmaschine Step Functions übermittelt wurden, automatisch zu genehmigen.

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); }); } };

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

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

{ "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 } } }

Weitere Informationen zum Konfigurieren von IAM bei der Verwendung von Step Functions mit anderenAWSDienstleistungen, sieheIAM-Richtlinien für integrierte Dienste.

IAM-Beispiele

Diese BeispieleAWS Identity and Access Management(IAM) -Richtlinien, die vom Beispielprojekt generiert werden, enthalten die geringsten Berechtigungen, die zum Ausführen der Zustandsmaschine und der zugehörigen Ressourcen erforderlich sind. Wir empfehlen, dass Sie nur die Berechtigungen angeben, die in Ihren IAM-Richtlinien 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" } ] }

Weitere Informationen zum Konfigurieren von IAM bei der Verwendung von Step Functions mit anderenAWSDienstleistungen, sieheIAM-Richtlinien für integrierte Dienste.