

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
<a name="concepts-sam-sfn"></a>

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](https://catalog.workshops.aws/stepfunctions/iac/deploy-with-sam) *im AWS Step Functions Workshop*.

## Warum sollten Sie Step Functions mit verwenden AWS SAM?
<a name="concepts-sam-sfn-integration"></a>

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 CloudFormationunterstützt [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitionsubstitutions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-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](#sam-definition-substitution-eg). 
+ 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
<a name="concepts-sam-sfn-ots2"></a>

Sie können die [AWS SAM Richtlinienvorlagen](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html) 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
<a name="concepts-sam-sfn-ots3"></a>

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-state-machine-using-sam.md) Tutorial aus, um zu erfahren, wie Sie AWS SAM Zustandsmaschinen erstellen.

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


| CLI-Befehl | Description | 
| --- | --- | 
| 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
<a name="sam-definition-substitution-eg"></a>

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 Lambda Funktionen und die DynamoDB Tabelle in der folgenden Vorlage werden mit angegeben [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitionsubstitutions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-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 Datei`stock_trader.asl.json`, die im [Erstellen Sie eine Step Functions Functions-Zustandsmaschine mit AWS SAM](tutorial-state-machine-using-sam.md) 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](#sam-template-def-substitution) Eigenschaft der Vorlage definiert. `DefinitionSubstitutions`ist eine Zuordnung von Schlüssel-Wert-Paaren für die Zustandsmaschinen-Ressource. In`DefinitionSubstitutions`, $ {StockCheckerFunctionArn} wird mithilfe der systemeigenen Funktion dem ARN der `StockCheckerFunction` CloudFormation Ressource zugeordnet. [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html) 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
<a name="concepts-sam-sfn-next-steps"></a>

In den folgenden Ressourcen erfahren Sie mehr über die Verwendung von Step Functions: AWS SAM 
+ Schließen Sie das [Erstellen Sie eine Step Functions Functions-Zustandsmaschine mit AWS SAM](tutorial-state-machine-using-sam.md) Tutorial ab, um eine Zustandsmaschine mit zu erstellen AWS SAM.
+ Geben Sie eine [AWS::Serverless::StateMachine](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html)Ressource an.
+ Suchen Sie die zu verwendenden [AWS SAM -Richtlinienvorlagen](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html).
+ [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/stepfunctions.html)Mit Step Functions verwenden. 
+ Lesen Sie die [AWS SAM CLI-Referenz](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-command-reference.html), um mehr über die Funktionen zu erfahren, die in verfügbar sind AWS SAM.

Sie können Ihre Workflows auch in Infrastructure as Code (IaC) mithilfe von Visual Buildern wie Workflow Studio in Infrastructure Composer entwerfen und erstellen. Weitere Informationen finden Sie unter [Verwenden von Workflow Studio Infrastructure Composer zur Erstellung von Step Functions Functions-Workflows](use-wfs-in-app-composer.md).