Open ChristopheBougere opened 6 years ago
Hi @ChristopheBougere, thank you for opening this issue :+1: Recently, serverless-step-functions-offline has been released for local development. How about use that?
Hi @horike37
Here are some concerns I have with serverless-step-functions-offline
. I think it can be really useful for a simple use case, but could be blocking on more complicated workflows.
localstack
, or serverless-offline
) which already are handling lots of cases specific to lambda context/runtimes/...@ChristopheBougere AWS has also published a tool themselves for running Step Functions locally
While interesting, if you want an offline experience for your step functions, you still need to provide emulated services for, at a bare minimum, Lambda (but probably also DynamoDB, SQS, SNS, etc.).
Does anyone have a working setup for that?
Is LocalStack the answer for providing simulacra for those other services?
I have a very basic package here: https://www.npmjs.com/package/serverless-offline-step-functions
It needs work, but is a good starting point and any feedback would be great
I just started on a plugin that supports step functions in serverless offline.
https://github.com/pianomansam/serverless-offline-stepfunctions
I also created a plugin to automatically start/stop the wonderful stepfunctions-local by @tristanbenier and @ChristopheBougere so we have a local Step Functions server:
https://github.com/pianomansam/serverless-offline-stepfunctions-local
This is a Feature Proposal
Description
What should be solved
Ability to execute a state machine locally. This would be really helpful to ease development. I'd like to open discussion on allowing resources creation using AWS StepFunctions API on a specific endpoint when an option is passed.
How can we achieve it
Using stepfunctions-local, anyone can start a local stepfunctions server which is AWS-API compliant (goal being to be as close as possible from the AWS engine, like with serverless-dynamodb-local and serverless-s3-local which are using local server with the same API).
Then we could either add an
--offline
/--local
option toserverless invoke
:or create a new subcommand
invoke local
(which would look like the officialserverless invoke local
for lambda):Instead of deploying resources to CloudFormation, this command would parse the stepfunction definition in
serverless.yml
and create resources using AWS StepFunctions API on the defined endpoint (likehttp://localhost:4584
). Basically, we don't need IAM roles and we would have to:executionArn
Additional config
Similar or dependent PR:
90 was only adding the validation, which may not be necessary anymore with a way to execute state machines locally
Let me know your opinion on this, I would be happy to submit a PR if you're interested in this feature.