Crear una máquina de estado de Step Functions con AWS SAM - AWS Step Functions

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:


            Diagrama que muestra una función de Lambda que se invoca cuando envía una solicitud GET al punto de conexión de API Gatreway

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 application cd project-directory sam build # Step 3 - Deploy your application sam 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:

  1. Ha creado una cuenta de AWS.

  2. ha configurado los permisos de IAM.

  3. Ha instalado Homebrew. Nota: Homebrew solo es un requisito previo para Linux y macOS.

  4. 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:

  1. Plantilla: plantillas de inicio rápido de AWS

  2. Idioma: Python, Ruby, NodeJS, Go, Java o .NET

  3. Nombre del proyecto: (nombre que elija, el valor predeterminado es sam-app)

  4. 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 Lenguaje de estados de Amazon.

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:

  1. Para comenzar, inicie sesión en AWS Management Console y abra la consola de Step Functions en https://console.aws.amazon.com/states/.

  2. En el panel de navegación izquierdo, elija Máquinas de estado.

  3. Busque y elija su nueva máquina de estado en la lista. Se llamará StockTradingStateMachine-<unique-hash>.

  4. 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.

Solució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:

  1. Inicie sesión en la AWS Management Console y abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. En el panel de navegación izquierdo, elija Pilas.

  3. En la lista de pilas, elija sam-app (o el nombre de la pila que creó).

  4. 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 --region region

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, eligiendo Pilas en el panel de navegación izquierdo y eligiendo Eliminadas en el menú desplegable situado a la derecha del cuadro de texto de búsqueda. Debería ver el nombre de su pila sam-app (o el nombre de la pila que creó) en la lista de pilas eliminadas.