Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso AWS SAM para crear flujos de trabajo de Step Functions
Puede usarlo AWS Serverless Application Model con Step Functions para crear flujos de trabajo e implementar la infraestructura que necesita, incluidas las funciones APIs y eventos de Lambda, para crear aplicaciones sin servidor.
También puede usar la AWS Serverless Application Model CLI junto con la AWS Toolkit for Visual Studio Code como parte de una experiencia integrada para crear e implementar máquinas de AWS Step Functions estado. Puede desarrollar una aplicación sin servidor con AWS SAM y luego construir su máquina de estado en el IDE de VS Code. Posteriormente, puede validar, empaquetar e implementar sus recursos.
sugerencia
Para implementar un ejemplo de aplicación sin servidor que inicie un flujo de trabajo de Step Functions mediante AWS SAM, consulte Implementar con AWS SAM
¿Por qué usar Step Functions con AWS SAM?
Cuando utilizas Step Functions con AWS SAM , puedes:
-
Comience a usar una plantilla AWS SAM de ejemplo.
-
Crear su máquina de estado en su aplicación sin servidor.
-
Utilice la sustitución de variables para sustituirlas ARNs en su máquina de estados en el momento de la implementación.
AWS CloudFormation admite
DefinitionSubstitutions
que permiten añadir referencias dinámicas en la definición de su flujo de trabajo a un valor que proporcione en la plantilla de CloudFormation. Puede añadir referencias dinámicas añadiendo sustituciones a la definición del flujo de trabajo mediante la notación${dollar_sign_brace}
. También debe definir estas referencias dinámicas en laDefinitionSubstitutions
propiedad del StateMachine recurso de la CloudFormation plantilla. Estas sustituciones se sustituyen por valores reales durante el proceso de creación de la pila de CloudFormation. Para obtener más información, consulte DefinitionSubstitutions en plantillas AWS SAM. -
Especifique la función de su máquina de estados mediante plantillas AWS SAM de políticas.
-
Inicie las ejecuciones de máquinas de estado con API Gateway, EventBridge eventos o según una programación incluida en su AWS SAM plantilla.
Integración de Step Functions con la especificación de AWS SAM
Puede utilizar las plantillas de políticas de AWS SAM para agregar permisos a su máquina de estado. Con estos permisos, puede organizar las funciones de Lambda y AWS otros recursos para crear flujos de trabajo complejos y sólidos.
Integración de Step Functions con la CLI de SAM
Step Functions está integrado con la AWS SAM CLI. Utilice esto para desarrollar rápidamente una máquina de estado en su aplicación sin servidor.
Pruebe el Crear una máquina de estado de Step Functions con AWS SAM tutorial para aprender a utilizarlas AWS SAM para crear máquinas de estado.
Las funciones AWS SAM CLI compatibles incluyen:
Comando de la CLI | Descripción |
---|---|
sam init |
Inicializa una aplicación sin servidor con una AWS SAM plantilla. Se puede utilizar con una plantilla de SAM para Step Functions. |
sam validate | Valida una plantilla. AWS SAM |
sam package |
Empaqueta una AWS SAM aplicación. Crea un archivo ZIP de su código y dependencias y luego lo carga en Amazon S3. Después, el comando devuelve una copia de la plantilla de AWS SAM , sustituyendo las referencias a artefactos locales con la ubicación de Amazon S3 donde el comando cargó los artefactos. |
sam deploy | Implementa una AWS SAM aplicación. |
sam publish |
Publica una AWS SAM aplicación en. AWS Serverless Application Repository Este comando toma una AWS SAM plantilla empaquetada y publica la aplicación en la región especificada. |
nota
Si usa AWS SAM local, puede emular Lambda y API Gateway localmente. Sin embargo, no puedes emular Step Functions localmente usando AWS SAM.
DefinitionSubstitutions en plantillas AWS SAM
Puede definir máquinas de estado utilizando una plantilla de CloudFormation con AWS SAM. Con AWS SAM, puede definir la máquina de estado insertándola en la plantilla o en un archivo independiente. La siguiente plantilla de AWS SAM incluye una máquina de estado que simula un flujo de trabajo de cotización de acciones. Esta máquina de estado invoca tres funciones de Lambda para comprobar el precio de una acción y determinar si se debe comprar o vender la acción. A continuación, esta transacción se registra en una tabla de Amazon DynamoDB. Las ARNs Lambda funciones y la DynamoDB tabla de la siguiente plantilla se especifican mediante 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
El siguiente código es la definición de máquina de estado del archivo stock_trader.asl.json
que se utiliza en el tutorial Crear una máquina de estado de Step Functions con AWS SAM. Esta definición de máquina de estado contiene varias DefinitionSubstitutions
que se denotan mediante notación ${dollar_sign_brace}
. Por ejemplo, en lugar de especificar un ARN de función de Lambda estática para la tarea Check Stock Value
, se utiliza la sustitución ${StockCheckerFunctionArn}
. Esta sustitución se define en la propiedad DefinitionSubstitutions de la plantilla. DefinitionSubstitutions
es un mapa de pares de clave-valor para el recurso de la máquina de estado. EnDefinitionSubstitutions
, $ {StockCheckerFunctionArn} se asigna al ARN del StockCheckerFunction
recurso mediante la función CloudFormation intrínseca. !GetAtt
Al implementar la plantilla de AWS SAM, las DefinitionSubstitutions
de la plantilla se sustituyen por los valores reales.
{ "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 } } }
Pasos a seguir a continuación
Puede obtener más información sobre el uso de Step Functions AWS SAM con los siguientes recursos:
-
Completa el Crear una máquina de estado de Step Functions con AWS SAM tutorial para crear una máquina de estados con AWS SAM.
-
Especifique un AWS::Serverless::StateMachinerecurso.
-
Busque las plantillas de políticas de AWS SAM que desea utilizar.
-
Use AWS Toolkit for Visual Studio Code con Step Functions.
-
Consulte la referencia de la CLI de AWS SAM para obtener más información sobre las características disponibles en AWS SAM.
También puede diseñar y crear sus flujos de trabajo en infraestructura como código (IaC) mediante generadores visuales, como Workflow Studio en Infrastructure Composer. Para obtener más información, consulte Uso de Workflow Studio en Infrastructure Composer para crear flujos de trabajo de Step Functions.