AWS Step Functions se puede ejecutar en un entorno Docker local utilizando Step Functions Local Docker . Sin embargo, las funciones de paso deben definirse mediante el lenguaje de estados de Amazon basado en JSON. Esto no es nada conveniente si su infraestructura de AWS (Step Functions más lambdas) se define mediante AWS CDK/CloudFormation.
¿Hay alguna manera de crear la definición del lenguaje de estados de Amazon de una máquina de estado a partir de la salida de CDK o CloudFormation, de modo que sea posible ejecutar las funciones de paso localmente?
Mi ciclo de desarrollo actualmente me toma 30 minutos para construir/implementar/ejecutar mis funciones de pasos basadas en Lambda en AWS para probarlas y seguramente debe haber una forma mejor/más rápida de probarlas que esta.
Puede usar cdk watch o la opción --hotswap para implementar su máquina de estado actualizada o funciones de Lambda sin una implementación de CloudFormation.
https://aws.amazon.com/blogs/developer/aumento-de-la-velocidad-de-desarrollo-con-cdk-watch/
Si desea probar con Step Functions local, cdk synth genera el código de CloudFormation que contiene la definición ASL JSON de la máquina de estado. Si obtiene eso y reemplaza las referencias de CloudFormation y las funciones intrínsecas, puede usarlo para crear y ejecutar la máquina de estado en Step Functions Local.
Cómo algunas personas han automatizado esto:
Hemos sido capaces de lograr esto por lo siguiente:
Descargar:
https://docs.aws.amazon.com/step-functions/latest/dg/sfn-local.html
Para ejecutar funciones de paso locales, en el directorio donde extrajo los archivos locales de función de paso, ejecute:
java -jar StepFunctionsLocal.jar --lambda-punto final http://localhost:3003
Para crear una máquina de estado, necesita una definición json (se puede extraer de la plantilla generada o puede obtener el complemento del kit de herramientas para el código Vs, escribir funciones de paso, seleccionar de una plantilla y ese puede ser su iniciador. También puede obtenerlo desde la consola de AWS en la pestaña de definición en la función de paso.
Ejecute este comando en el mismo directorio que la definición json:
aws stepfunctions --endpoint http://localhost:8083 create-state-machine --definition " cat step-function.json " --name "local-state-machine" --role-arn "arn:aws:iam: :012345678901:rol/Rol ficticio"
Deberías poder golpear el SF ahora (con suerte) :)
Otra solución que podría ayudar es usar localstack, que es compatible con muchas herramientas, como CDK o CloudFormation, y permite que los desarrolladores ejecuten stack localmente.
Hay una variedad de formas de ejecutarlo, una de ellas es ejecutarlo manualmente en el contenedor docker, de acuerdo con las instrucciones de inicio .
A continuación, siguiendo las instrucciones , ¿qué sigue? Configure aws-cli o use awslocal .
Todos los próximos pasos y plantillas deben ser los mismos que para la API de AWS en la nube.