AWS Step Functions und AWS SAM - 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.

AWS Step Functions und AWS SAM

Sie können die AWS SAM CLI in Verbindung mit der AWS Toolkit for Visual Studio Code als Teil einer integrierten Erfahrung verwenden, um Zustandsmaschinen lokal zu erstellen. Sie können eine serverlose Anwendung mit AWS SAM der VS Code IDE erstellen und dann Ihre Zustandsmaschine ausbauen. Anschließend können Sie Ihre Ressourcen validieren, verpacken und bereitstellen. Optional können Sie auch auf dem veröffentlichen AWS Serverless Application Repository.

Tipp

Informationen zur Bereitstellung einer serverlosen Beispielanwendung, die einen Step Functions Functions-Workflow mit AWS SAM Ihrem startet AWS-Konto, finden Sie in Modul 11 — Bereitstellen mit AWS SAM von The AWS Step Functions Workshop.

Warum sollten Sie Step Functions mit verwenden AWS SAM?

Wenn Sie Step Functions mit verwenden AWS SAM , können Sie:

  • Beginnen Sie mit einer AWS SAM Beispielvorlage.

  • Integrieren Sie Ihren Zustandsautomaten in Ihre serverlose Anwendung.

  • Verwenden Sie die Variablenersetzung, um ARNs zum Zeitpunkt der Bereitstellung in Ihrem State-Machine zu ersetzen.

    AWS CloudFormationunterstützt DefinitionSubstitutions, mit denen Sie dynamische Verweise in Ihrer Workflow-Definition zu einem Wert hinzufügen können, den Sie in Ihrer CloudFormation Vorlage angeben. Sie können dynamische Verweise hinzufügen, indem Sie Ihrer Workflow-Definition mithilfe der ${dollar_sign_brace} Notation Substitutionen hinzufügen. Sie müssen diese dynamischen Verweise auch in der DefinitionSubstitutions Eigenschaft für die StateMachine Ressource in Ihrer CloudFormation Vorlage definieren. Diese Ersetzungen werden bei der Erstellung des CloudFormation Stacks durch tatsächliche Werte ersetzt. Weitere Informationen finden Sie unter DefinitionSubstitutions in Vorlagen AWS SAM.

  • Geben Sie die Rolle Ihres Zustandsmaschinen mithilfe von AWS SAM Richtlinienvorlagen an.

  • Initiieren Sie State-Machine-Ausführungen mit API Gateway, EventBridge Ereignissen oder nach einem Zeitplan innerhalb Ihrer AWS SAM Vorlage.

Step Functions Integration mit der AWS SAM Spezifikation

Sie können die AWS SAM Richtlinienvorlagen verwenden, um Ihrem Zustandsmaschine Berechtigungen hinzuzufügen. Mit diesen Berechtigungen können Sie Lambda-Funktionen und andere AWS Ressourcen orchestrieren, um komplexe und robuste Workflows zu bilden.

Integration von Schrittfunktionen in die SAM-CLI

Step Functions ist in die AWS SAM CLI integriert. Verwenden Sie diese Option, um einen Zustandsautomaten schnell in Ihre serverlose Anwendung zu entwickeln.

Probieren Sie das Erstellen einer Step Functions Functions-ZustandsmaschineAWS SAM Tutorial aus, um zu erfahren, wie Sie AWS SAM Zustandsmaschinen erstellen.

Zu den unterstützten AWS SAM CLI-Funktionen gehören:

CLI-Befehl Beschreibung
sam init

Initialisiert eine serverlose Anwendung mit einer Vorlage. AWS SAM Kann mit einer SAM-Vorlage für Schrittfunktionen verwendet werden.

sam validate Validiert eine Vorlage. AWS SAM
sam package

Paketiert eine AWS SAM Anwendung. Es erstellt eine ZIP-Datei mit Ihrem Code und Ihren Abhängigkeiten und lädt sie dann auf Amazon S3 hoch. Anschließend wird eine Kopie Ihrer AWS SAM -Vorlage zurückgegeben, wobei Verweise auf lokale Artefakte durch den Amazon S3-Speicherort ersetzt werden, zu dem der Befehl die Artefakte hochgeladen hat.

sam deploy Stellt eine AWS SAM Anwendung bereit.
sam publish

Veröffentlichen Sie eine AWS SAM Anwendung auf der AWS Serverless Application Repository. Dieser Befehl verwendet ein AWS SAM Vorlagenpaket und veröffentlicht die Anwendung in der angegebenen Region.

Anmerkung

Wenn Sie AWS SAM local verwenden, können Sie Lambda und API Gateway lokal emulieren. Sie können Step Functions jedoch nicht lokal emulieren, indem Sie AWS SAM.

DefinitionSubstitutions in Vorlagen AWS SAM

Sie können Zustandsmaschinen mithilfe von CloudFormation Vorlagen mit definierenAWS SAM. Unter Verwendung von AWS SAM können Sie den Zustandsautomaten inline in der Vorlage oder in einer separaten Datei definieren. Die folgende AWS SAM Vorlage enthält eine Zustandsmaschine, die einen Aktienhandelsablauf simuliert. Diese Zustandsmaschine ruft drei Lambda Funktionen auf, um den Kurs einer Aktie zu überprüfen und festzustellen, ob die Aktie gekauft oder verkauft werden soll. Diese Transaktion wird dann in einer Amazon DynamoDB Tabelle aufgezeichnet. Die ARNs für die Lambda Funktionen und die DynamoDB Tabelle in der folgenden Vorlage werden mit DefinitionSubstitutionsangegeben.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: | step-functions-stock-trader Sample SAM Template for step-functions-stock-trader Resources: StockTradingStateMachine: Type: AWS::Serverless::StateMachine Properties: DefinitionSubstitutions: StockCheckerFunctionArn: !GetAtt StockCheckerFunction.Arn StockSellerFunctionArn: !GetAtt StockSellerFunction.Arn StockBuyerFunctionArn: !GetAtt StockBuyerFunction.Arn DDBPutItem: !Sub arn:${AWS::Partition}:states:::dynamodb:putItem DDBTable: !Ref TransactionTable Policies: - DynamoDBWritePolicy: TableName: !Ref TransactionTable - LambdaInvokePolicy: FunctionName: !Ref StockCheckerFunction - LambdaInvokePolicy: FunctionName: !Ref StockBuyerFunction - LambdaInvokePolicy: FunctionName: !Ref StockSellerFunction DefinitionUri: statemachine/stock_trader.asl.json StockCheckerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-checker/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 StockSellerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-seller/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 StockBuyerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-buyer/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 TransactionTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S

Der folgende Code ist die Zustandsmaschinen-Definition in der Dateistock_trader.asl.json, die im Erstellen einer Step Functions Functions-ZustandsmaschineAWS SAM Tutorial verwendet wird. Diese Zustandsmaschinen-Definition enthält mehrere Zustandsmaschinen, die durch die Notation DefinitionSubstitutions gekennzeichnet sind. ${dollar_sign_brace} Anstatt beispielsweise einen statischen Lambda Funktions-ARN für die Check Stock Value Aufgabe anzugeben, ${StockCheckerFunctionArn} wird die Substitution verwendet. Diese Substitution ist in der DefinitionSubstitutions Eigenschaft der Vorlage definiert. DefinitionSubstitutionsist eine Zuordnung von Schlüssel-Wert-Paaren für die Zustandsmaschinen-Ressource. InDefinitionSubstitutions, $ {StockCheckerFunctionArn} wird mithilfe der systemeigenen Funktion dem ARN der StockCheckerFunction CloudFormation Ressource zugeordnet. !GetAtt Wenn Sie die AWS SAM Vorlage bereitstellen, werden die DefinitionSubstitutions in der Vorlage enthaltenen Werte durch die tatsächlichen Werte ersetzt.

{ "Comment": "A state machine that does mock stock trading.", "StartAt": "Check Stock Value", "States": { "Check Stock Value": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockCheckerFunctionArn}" }, "Next": "Buy or Sell?" }, "Buy or Sell?": { "Type": "Choice", "Choices": [ { "Variable": "$.stock_price", "NumericLessThanEquals": 50, "Next": "Buy Stock" } ], "Default": "Sell Stock" }, "Buy Stock": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockBuyerFunctionArn}" }, "Retry": [ { "ErrorEquals": [ "Lambda.ServiceException", "Lambda.AWSLambdaException", "Lambda.SdkClientException", "Lambda.TooManyRequestsException" ], "IntervalSeconds": 1, "MaxAttempts": 3, "BackoffRate": 2 } ], "Next": "Record Transaction" }, "Sell Stock": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockSellerFunctionArn}" }, "Next": "Record Transaction" }, "Record Transaction": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:putItem", "Parameters": { "TableName": "${DDBTable}", "Item": { "Id": { "S.$": "$.id" }, "Type": { "S.$": "$.type" }, "Price": { "N.$": "$.price" }, "Quantity": { "N.$": "$.qty" }, "Timestamp": { "S.$": "$.timestamp" } } }, "End": true } } }

Nächste Schritte

In den folgenden Ressourcen können Sie mehr über die Verwendung von Step Functions erfahren: AWS SAM

Sie können Ihre Workflows auch in Infrastructure as Code (IaC) mithilfe von Visual Buildern wie Workflow Studio in Application Composer entwerfen und erstellen. Weitere Informationen finden Sie unter Verwenden von Workflow Studio in Application Composer.