Usando AWS SAM para criar fluxos de trabalho de Step Functions - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando AWS SAM para criar fluxos de trabalho de Step Functions

Você pode usar o AWS Serverless Application Model Step Functions para criar fluxos de trabalho e implantar a infraestrutura de que precisa, incluindo funções e eventos LambdaAPIs, para criar aplicativos sem servidor.

Você também pode usar o AWS Serverless Application Model CLI em conjunto com o AWS Toolkit for Visual Studio Code como parte de uma experiência integrada para criar e implantar máquinas de AWS Step Functions estado. Você pode criar um aplicativo sem servidor com e, em seguida AWS SAM, criar sua máquina de estado no VS Code. IDE Depois, você pode validar, empacotar e implantar recursos.

dica

Para implantar um exemplo de aplicativo sem servidor que inicia um fluxo de trabalho do Step Functions usando o AWS SAM seu Conta da AWS, consulte o Módulo 11 - Deploy with AWS SAM do The AWS Step Functions Workshop.

Por que usar Step Functions com AWS SAM?

Ao usar o Step Functions com AWS SAM você pode:

  • Comece a usar um modelo AWS SAM de amostra.

  • Compilar a máquina de estado no aplicativo sem servidor.

  • Use a substituição de variáveis para substituí-la ARNs em sua máquina de estado no momento da implantação.

    AWS CloudFormation suportes DefinitionSubstitutionsque permitem adicionar referências dinâmicas em sua definição de fluxo de trabalho a um valor que você fornece em seu CloudFormation modelo. É possível adicionar referências dinâmicas incluindo substituições na definição de fluxo de trabalho usando a notação ${dollar_sign_brace}. Você também precisa definir essas referências dinâmicas na DefinitionSubstitutions propriedade para o StateMachine recurso em seu CloudFormation modelo. Essas substituições são substituídas por valores reais durante o CloudFormation processo de criação de pilha. Para obter mais informações, consulte DefinitionSubstitutions em AWS SAM modelos.

  • Especifique a função da sua máquina de estado usando modelos AWS SAM de política.

  • Inicie execuções de máquinas de estado com API Gateway, EventBridge eventos ou em um cronograma dentro do seu AWS SAM modelo.

Integração do Step Functions com a especificação do AWS SAM

É possível usar os Modelos de política do AWS SAM para adicionar permissões à máquina de estado. Com essas permissões, você pode orquestrar funções do Lambda e outros AWS recursos para formar fluxos de trabalho complexos e robustos.

Integração do Step Functions com o SAM CLI

O Step Functions está integrado com AWS SAM CLI o. Use isso para desenvolver rapidamente uma máquina de estado no aplicativo sem servidor.

Experimente o Criar uma máquina de estado do Step Functions usando AWS SAM tutorial para aprender a usar AWS SAM para criar máquinas de estado.

AWS SAM CLIAs funções suportadas incluem:

CLIComando Descrição
sam init

Inicializa um aplicativo sem servidor com um modelo. AWS SAM Pode ser usado com um SAM modelo para Step Functions.

sam validate Valida um AWS SAM modelo.
sam package

Empacota um AWS SAM aplicativo. Ele cria um ZIP arquivo do seu código e dependências e, em seguida, o carrega para o Amazon S3. Depois, ele retorna uma cópia do modelo do AWS SAM , substituindo referências a artefatos locais pelo local do Amazon S3 onde o comando fez upload dos artefatos.

sam deploy Implanta um AWS SAM aplicativo.
sam publish

Publique um AWS SAM aplicativo no AWS Serverless Application Repository. Esse comando usa um AWS SAM modelo empacotado e publica o aplicativo na região especificada.

nota

Ao usar o AWS SAM local, você pode emular o Lambda API e o Gateway localmente. No entanto, você não pode emular Step Functions localmente usando o. AWS SAM

DefinitionSubstitutions em AWS SAM modelos

Você pode definir máquinas de estado usando CloudFormation modelos com AWS SAM. Usando AWS SAM, você pode definir a máquina de estado embutida no modelo ou em um arquivo separado. Os seguintes exemplos de AWS SAM O modelo inclui uma máquina de estado que simula um fluxo de trabalho de negociação de ações. Esta máquina de estado invoca três Lambda funções para verificar o preço de uma ação e determinar se a ação deve ser comprada ou vendida. Essa transação é então registrada em um Amazon DynamoDB mesa. O ARNs para o Lambda funções e DynamoDB as tabelas no modelo a seguir são especificadas usando 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

O código a seguir é a definição da máquina de estado no arquivo stock_trader.asl.json usado no tutorial Criar uma máquina de estado do Step Functions usando AWS SAM. Essa definição da máquina de estado contém várias DefinitionSubstitutions indicadas pela notação ${dollar_sign_brace}. Por exemplo, em vez de especificar uma estática Lambda função ARN para a Check Stock Value tarefa, a substituição ${StockCheckerFunctionArn} é usada. Essa substituição é definida na propriedade DefinitionSubstitutions do modelo. DefinitionSubstitutions é um mapa de pares de chave-valor para o recurso de máquina de estado. EmDefinitionSubstitutions, $ {StockCheckerFunctionArn} mapeia para o ARN do StockCheckerFunction recurso usando o CloudFormation função intrínseca. !GetAtt Quando você implanta o AWS SAM modelo, os DefinitionSubstitutions no modelo são substituídos pelos valores reais.

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

Próximas etapas

Você pode aprender mais sobre o uso do Step Functions AWS SAM com os seguintes recursos:

Você também pode projetar e criar seus fluxos de trabalho em infraestrutura como código (IaC) usando construtores visuais, como o Workflow Studio em Infrastructure Composer. Para obter mais informações, consulteUsando o Workflow Studio em Infrastructure Composer para criar fluxos de trabalho do Step Functions.