aws-stepfunction

Yet the most developer friendly orchestration tool on AWS.


License
MIT
Install
pip install aws-stepfunction==0.0.5

Documentation

Documentation Status https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social

Welcome to aws_stepfunction Documentation

Note

You may not viewing the full document, FULL DOCUMENT IS HERE

Why this Library?

aws_stepfunction provides AWS StepFunction developer a "smooth", "interruption free", "enjoyable" development experience.

If your mind set matches most of the following, aws_stepfunction is the right tool for you:

  • I love the AWS StepFunction Visual Editor
  • I love Python
  • I don't want to spent much time learning the Amazon State Machine JSON DSL (Domain Specific Language)
  • I can't memorize the code syntax
  • I respect code readability and maintainability

Talk is cheap, show me the code

The following code snippet is an equivalent of the below Workflow in the Visual Editor

import aws_stepfunction as sfn
from boto_session_manager import BotoSesManager

# Declare a workflow object
workflow = sfn.Workflow(comment="The power of aws_stepfunction library!")

# Define some tasks and states
task_invoke_lambda = sfn.actions.lambda_invoke(func_name="stepfunction_quick_start")
succeed = sfn.Succeed()
fail = sfn.Fail()

# Orchestrate the Workflow
(
    workflow.start_from(task_invoke_lambda)
    .choice([
        (  # define condition
            sfn.not_(sfn.Var("$.body").string_equals("failed!"))
            .next_then(succeed)
        ),
        (  # define condition
            sfn.Var("$.body").string_equals("failed!")
            .next_then(fail)
        ),
    ])
)

# Declare an instance of State Machine
state_machine = sfn.StateMachine(
    name="stepfunction_quick_start",
    workflow=workflow,
    role_arn="arn:aws:iam::111122223333:role/my_lambda_role",
)

# Deploy state machine
bsm = BotoSesManager(profile_name="my_aws_profile", region_name="us-east-1")
state_machine.deploy(bsm)

# Execute state machine with custom payload
state_machine.execute(bsm, payload={"name": "alice"})

# delete step function
state_machine.delete(bsm)

https://user-images.githubusercontent.com/6800411/183264808-ecf1c7bc-0c9a-40fd-a42d-ea06e472c9ec.png

You mentioned "Smooth Development Experiment"?

I guess "a picture is worth a thousand words":

https://user-images.githubusercontent.com/6800411/183265960-5c1b3e15-e3ac-4035-a8f3-b39d4810e466.png

https://user-images.githubusercontent.com/6800411/183265961-9312df74-9fbe-42b3-bfc8-747ce0009929.png

https://user-images.githubusercontent.com/6800411/183265962-c01bc5d4-7d0a-40a2-9a6a-0207a12b41cb.png

https://user-images.githubusercontent.com/6800411/183265963-8d177efb-93a9-484a-856a-cc2d6f7c4d15.png

Install

aws_stepfunction is released on PyPI, so all you need is:

$ pip install aws_stepfunction

To upgrade to latest version:

$ pip install --upgrade aws_stepfunction