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 AWS SAM aplicación de ejemplo que contiene una máquina de AWS Step Functions estados. 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 la instalación del AWS SAM CLI sistema operativo. Se supone que ha hecho lo siguiente:
-
Creó una AWS cuenta.
-
IAMPermisos configurados.
-
Ha instalado Homebrew. Nota: Homebrew solo es un requisito previo para Linux y macOS.
-
Instaló el AWS SAM CLI. 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 AWS rápido
-
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é AWS SAM está haciendo:
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 AWS SAM plantilla que define los AWS recursos de la aplicación. -
statemachine/stockTrader.asl.json
: contiene la definición de máquina de estado de la aplicación, que está escrita en Uso del lenguaje de Amazon States 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 estados como un archivo independiente en lugar de incrustarla en la AWS SAM plantilla. 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é AWS SAM está haciendo:
AWS SAM CLIIncluye abstracciones para varios tiempos de ejecución de Lambda para crear sus dependencias y copia todos los artefactos de compilación en carpetas de ensayo para que todo esté listo para ser empaquetado e implementado. 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: Implemente su aplicación en la nube 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é AWS SAM está haciendo:
Este comando despliega la aplicación en la AWS nube. Toma los artefactos de despliegue que crea con el sam build
comando, los empaqueta y los carga en un bucket de Amazon S3 creado por AWS SAM CLI, y despliega la aplicación mediante él. 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:
Inicie sesión en la consola Step Functions AWS Management Console y ábrala 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
SAMCLIerror: «no existe esa 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 AWS SAM CLI que no admite el --guided
parámetro. Para solucionar este problema, puede actualizar la versión de AWS SAM CLI a la 0.33.0 o posterior, u omitir el --guided
parámetro en el comando. sam deploy
SAMCLIerror: «No se pudieron crear los recursos administrados: no se pudieron 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 AWS las credenciales que le permitan AWS SAM CLI realizar llamadas AWS de servicio. Para solucionar este problema, debe configurar AWS las credenciales. Para obtener más información, consulte Configuración de AWS credenciales en la Guía para AWS Serverless Application Model desarrolladores.
Eliminación
Si ya no necesita los AWS recursos que creó al ejecutar este tutorial, puede eliminarlos eliminando la AWS CloudFormation pila que implementó.
Para eliminar la AWS CloudFormation pila creada con este tutorial mediante el AWS Management Console, sigue estos pasos:
Inicie sesión AWS Management Console y abra la AWS CloudFormation consola 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.
Como alternativa, puedes eliminar la AWS CloudFormation pila ejecutando el siguiente AWS CLI comando:
aws cloudformation delete-stack --stack-name
sam-app
--regionregion
Verify Deleted Stack
Si utilizas ambos métodos para eliminar la AWS CloudFormation pila, puedes comprobar que se ha eliminado. Para ello, ve a https://console.aws.amazon.com/cloudformation