Zum Erstellen von Step Functions Functions-Workflows verwenden 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.

Zum Erstellen von Step Functions Functions-Workflows verwenden AWS SAM

Sie können Step Functions verwenden AWS Serverless Application Model , um Workflows zu erstellen und die Infrastruktur bereitzustellen, die Sie benötigen, einschließlich Lambda-Funktionen APIs und Ereignisse, um serverlose Anwendungen zu erstellen.

Sie können die AWS Serverless Application Model CLI auch in Verbindung mit der AWS Toolkit for Visual Studio Code als Teil einer integrierten Erfahrung verwenden, um AWS Step Functions Zustandsmaschinen zu erstellen und bereitzustellen. 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.

Tipp

Informationen zur Bereitstellung einer serverlosen Beispielanwendung, mit der ein Step Functions Functions-Workflow gestartet wird AWS SAM, finden Sie unter Deploy with AWS SAM im 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 sie zum Zeitpunkt der Bereitstellung durch Ihre Zustandsmaschine zu ersetzen.

    AWS CloudFormation unterstützt DefinitionSubstitutions, mit denen Sie dynamische Verweise in Ihrer Workflow-Definition zu einem Wert hinzufügen können, den Sie in Ihrem CloudFormation Vorlage. 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 Ihrem definieren CloudFormation Vorlage. Diese Ersetzungen werden während der CloudFormation Prozess der Stapelerstellung. Weitere Informationen finden Sie unter DefinitionSubstitutions in AWS SAM Vorlagen.

  • Geben Sie die Rolle Ihrer Zustandsmaschine 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 Sie eine Step Functions Functions-Zustandsmaschine mit AWS 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

Verpackt 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 AWS SAM Vorlagen

Sie können Zustandsmaschinen definieren mit CloudFormation Vorlagen mit AWS SAM. Verwenden AWS SAMkönnen Sie die Zustandsmaschine direkt in der Vorlage oder in einer separaten Datei definieren. Folgendes AWS SAM Die Vorlage enthält eine Zustandsmaschine, die einen Aktienhandelsablauf simuliert. Diese Zustandsmaschine ruft drei auf Lambda Funktionen, um den Kurs einer Aktie zu überprüfen und festzustellen, ob die Aktie gekauft oder verkauft werden soll. Diese Transaktion wird dann in einem aufgezeichnet Amazon DynamoDB Tabelle. Der ARNs für den Lambda Funktionen und DynamoDB Die Tabelle in der folgenden Vorlage wird mit angegeben DefinitionSubstitutions.

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 Sie eine Step Functions Functions-Zustandsmaschine mit AWS SAM Tutorial verwendet wird. Diese Zustandsmaschinen-Definition enthält mehrere Zustandsmaschinen, die durch die Notation DefinitionSubstitutions gekennzeichnet sind. ${dollar_sign_brace} Anstatt beispielsweise eine statische Angabe zu machen Lambda Funktion ARN für die Check Stock Value Aufgabe, die Substitution ${StockCheckerFunctionArn} wird 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 dem ARN der StockCheckerFunction Ressource zugeordnet, wobei der CloudFormation intrinsische Funktion. !GetAtt Wenn Sie das bereitstellen AWS SAM Bei der Vorlage 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 erfahren Sie mehr über die Verwendung von Step Functions: AWS SAM

Sie können Ihre Workflows auch mithilfe von Visual Buildern wie Workflow Studio in Infrastructure as Code (IaC) entwerfen und erstellen Infrastructure Composer. Weitere Informationen finden Sie unterVerwenden von Workflow Studio in Infrastructure Composer um Step Functions Functions-Workflows zu erstellen.