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.
Crear una máquina de estado de Step Functions con AWS SAM
En esta guía, descargará, compilará e implementará una aplicación de ejemplo de AWS SAM que contenga una máquina de estado de AWS Step Functions. Esta aplicación crea un flujo de trabajo bursátil simulado que se ejecuta en un horario predefinido (tenga en cuenta que el horario está desactivado de forma predeterminada para evitar incurrir en gastos).
El siguiente diagrama muestra los componentes de esta aplicación:

A continuación se muestra una vista previa de los comandos que se ejecutan para crear la aplicación de ejemplo. Para obtener más detalles sobre cada uno de estos comandos, consulte las secciones más adelante en esta página
# Step 1 - Download a sample application. For this tutorial you # will follow the prompts to select an AWS Quick Start Template # called 'Multi-step workflow'
sam init
# Step 2 - Build your applicationcd
project-directory
sam build
# Step 3 - Deploy your applicationsam deploy --guided
Requisitos previos
En esta guía se supone que ha completado los pasos de Instalación de la CLI de AWS SAM para su sistema operativo. Se supone que ha hecho lo siguiente:
-
Ha creado una cuenta de AWS.
-
ha configurado los permisos de IAM.
-
Ha instalado Homebrew. Nota: Homebrew solo es un requisito previo para Linux y macOS.
-
Ha instalado la CLI de AWS SAM. Nota: Asegúrese de tener la versión 0.52.0 o posterior. Puede comprobar qué versión tiene ejecutando el comando
sam --version
.
Paso 1: Descargar una aplicación de ejemplo de AWS SAM
Comando a ejecutar:
sam init
Siga las indicaciones que aparecen en pantalla para seleccionar lo siguiente:
-
Plantilla: plantillas de inicio rápido de AWS
-
Idioma: Python, Ruby, NodeJS, Go, Java o .NET
-
Nombre del proyecto: (nombre que elija, el valor predeterminado es
sam-app
) -
Aplicación de inicio rápido: flujo de trabajo de varios pasos
Qué está haciendo AWS SAM:
Este comando crea un directorio con el nombre que proporcionó para 'Nombre del proyecto' (el valor predeterminado es sam-app
). El contenido específico del directorio dependerá del idioma que elija.
A continuación se presentan los contenidos del directorio cuando se elige uno de los tiempos de ejecución de Python:
├── README.md ├── functions │ ├── __init__.py │ ├── stock_buyer │ │ ├── __init__.py │ │ ├── app.py │ │ └── requirements.txt │ ├── stock_checker │ │ ├── __init__.py │ │ ├── app.py │ │ └── requirements.txt │ └── stock_seller │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── statemachine │ └── stock_trader.asl.json ├── template.yaml └── tests └── unit ├── __init__.py ├── test_buyer.py ├── test_checker.py └── test_seller.py
Hay dos archivos especialmente interesantes que puede consultar:
-
template.yaml
: contiene la plantilla de AWS SAM que define los recursos de AWS de su aplicación. -
statemachine/stockTrader.asl.json
: contiene la definición de máquina de estado de la aplicación, que está escrita en Uso de Amazon States Language para definir los flujos de trabajo de Step Functions.
Puede ver la siguiente entrada en el archivo template.yaml
, que apunta al archivo de definición de máquina de estado:
Properties: DefinitionUri: statemachine/stock_trader.asl.json
Puede resultar útil mantener la definición de la máquina de estado como un archivo independiente en lugar de incrustarla en la plantilla de AWS SAM. Por ejemplo, el seguimiento de los cambios en la definición de la máquina de estado es más fácil si no se incluye la definición en la plantilla. Puede usar Workflow Studio para crear y mantener la definición de la máquina de estado y exportar la definición desde la consola directamente al archivo de especificaciones de Amazon States Language sin fusionarla con la plantilla.
Para obtener más información acerca de la aplicación de ejemplo, vea el archivo README.md
en el directorio del proyecto.
Paso 2: Cree su aplicación
Comando a ejecutar:
Primero cambie al directorio del proyecto (es decir, el directorio donde se encuentra el archivo template.yaml
de la aplicación de ejemplo; de forma predeterminada es sam-app
), después, ejecute este comando:
sam build
Ejemplo de resultados:
Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Invoke Function: sam local invoke [*] Deploy: sam deploy --guided
Qué está haciendo AWS SAM:
La CLI de AWS SAM viene con abstracciones para una serie de tiempos de ejecución de Lambda para crear sus dependencias y copia todos los artefactos de compilación en carpetas provisionales para que todo esté listo para empaquetarse e implementarse. El comando sam build
genera todas las dependencias que tiene la aplicación y copia los artefactos de compilación en carpetas bajo .aws-sam/build
.
Paso 3: Implementar la aplicación en la nube de AWS
Comando a ejecutar:
sam deploy --guided
Siga las indicaciones que aparecen en pantalla. Puede responder con Enter
para aceptar las opciones predeterminadas proporcionadas en la experiencia interactiva.
Qué está haciendo AWS SAM:
Este comando implementa su aplicación en la nube de AWS. Toma los artefactos de implementación que crea con el comando sam build
, los empaqueta y los carga en un bucket de Amazon S3 creado por la CLI de AWS SAM e implementa la aplicación mediante AWS CloudFormation. En la salida del comando deploy (implementar) puede ver los cambios que se están realizando en su pila de AWS CloudFormation.
Puede comprobar que la máquina de estado de ejemplo de Step Functions se implementó correctamente siguiendo estos pasos:
Para comenzar, inicie sesión en AWS Management Console y abra la consola de Step Functions en https://console.aws.amazon.com/states/
. -
En el panel de navegación izquierdo, elija Máquinas de estado.
-
Busque y elija su nueva máquina de estado en la lista. Se llamará StockTradingStateMachine-
<unique-hash>
. -
Elija la pestaña Definición.
Ahora debería ver una representación visual de su máquina de estado. Puede comprobar que la representación visual coincide con la definición de máquina de estado que se encuentra en el archivo statemachine/stockTrader.asl.json
del directorio del proyecto.
Resolución de problemas
Error de la CLI de SAM: "no existe la opción: --guided"
Al ejecutar sam deploy
, verá el siguiente error:
Error: no such option: --guided
Esto significa que está utilizando una versión anterior de la CLI de AWS SAM que no admite el parámetro --guided
. Para solucionar esto, puede actualizar su versión de la CLI de AWS SAM a 0.33.0 o posterior, u omitir el parámetro --guided
del comando sam deploy
.
Error de la CLI de SAM: «Error al crear recursos administrados: no se pueden localizar las credenciales»
Al ejecutar sam deploy
, verá el siguiente error:
Error: Failed to create managed resources: Unable to locate credentials
Esto significa que no ha configurado las credenciales de AWS para permitir que la CLI de AWS SAM realice llamadas a servicios de AWS. Para solucionarlo, debe configurar las credenciales de AWS. Para obtener más información, consulte Setting Up AWS Credentials in the AWS Serverless Application Model Developer Guide.
Eliminación
Si ya no necesita los recursos de AWS que creó ejecutando este tutorial, puede eliminarlos eliminando la pila de AWS CloudFormation que implementó.
Para eliminar la pila de AWS CloudFormation creada con este tutorial utilizando la AWS Management Console, siga estos pasos:
Inicie sesión en la AWS Management Console y abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation
. -
En el panel de navegación izquierdo, elija Pilas.
-
En la lista de pilas, elija sam-app (o el nombre de la pila que creó).
-
Elija Eliminar.
Cuando termine, el estado de la pila cambiará a DELETE_COMPLETE.
Alternativamente, puede eliminar la pila de AWS CloudFormation ejecutando el siguiente comando de la AWS CLI:
aws cloudformation delete-stack --stack-name
sam-app
--regionregion
Verify Deleted Stack
Para ambos métodos de eliminación de la pila de AWS CloudFormation, puede verificar que se eliminó yendo a https://console.aws.amazon.com/cloudformation