https://github.com/jbasko/aws-sfn-builder
AWS Step Functions: state machine boilerplate generator
https://github.com/jbasko/aws-sfn-builder
aws aws-step-functions boilerplate python state-machine
Last synced: 11 months ago
JSON representation
AWS Step Functions: state machine boilerplate generator
- Host: GitHub
- URL: https://github.com/jbasko/aws-sfn-builder
- Owner: jbasko
- License: mit
- Created: 2018-10-13T15:02:42.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-10-15T23:21:31.000Z (over 7 years ago)
- Last Synced: 2025-07-30T00:03:01.636Z (11 months ago)
- Topics: aws, aws-step-functions, boilerplate, python, state-machine
- Language: Python
- Size: 44.9 KB
- Stars: 4
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
===============
aws-sfn-builder
===============
AWS Step Functions State Machine builder.
The primary motivation for this was the amount of boilerplate (``Next``, ``End``) required to compose a valid
state machine definition, but soon one got carried away.
Python 3.6+ only.
Installation
------------
.. code-block:: shell
pip install aws-sfn-builder
Generate State Machine Definition from Simple Description
---------------------------------------------------------
.. code-block:: python
from aws_sfn_builder import Machine
Machine.parse([
"a",
[
["b-10", "b-11"],
["b-20"],
],
"c",
]).to_json()
This will generate:
.. code-block:: json
{
"StartAt": "a",
"States": {
"a": {
"Type": "Task",
"Next": "d3d52323-137d-4228-9956-d3b77cc43a92"
},
"d3d52323-137d-4228-9956-d3b77cc43a92": {
"Type": "Parallel",
"Next": "c",
"Branches": [
{
"StartAt": "b-10",
"States": {
"b-10": {
"Type": "Task",
"Next": "b-11"
},
"b-11": {
"Type": "Task",
"End": true
}
}
},
{
"StartAt": "b-20",
"States": {
"b-20": {
"Type": "Task",
"End": true
}
}
}
]
},
"c": {
"Type": "Task",
"End": true
}
}
}
Parse Existing State Machine Definition
---------------------------------------
.. code-block:: python
# TODO load state_machine_json_dict
state_machine = Machine.parse(state_machine_json_dict)
Compile State Machine
---------------------
.. code-block:: python
# TODO initialise state_machine
state_machine.compile()
Test Your State Machine
-----------------------
*Work in progress.*
.. code-block:: python
# TODO initialise state_machine
runner = Runner()
@runner.resource_provider("arn:aws:lambda:us-east-1:123456789012:function:Foo")
def foo(input):
return "foo-result"
final_state, output = runner.run(state_machine)