Skip to main content

Yet the most developer friendly orchestration tool on AWS.

Project description

Documentation Status https://github.com/MacHu-GWU/aws_stepfunction-project/workflows/CI/badge.svg https://codecov.io/gh/MacHu-GWU/aws_stepfunction-project/branch/main/graph/badge.svg https://img.shields.io/pypi/v/aws_stepfunction.svg https://img.shields.io/pypi/l/aws_stepfunction.svg https://img.shields.io/pypi/pyversions/aws_stepfunction.svg https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social
https://img.shields.io/badge/Link-Document-green.svg https://img.shields.io/badge/Link-API-blue.svg https://img.shields.io/badge/Link-Source_Code-blue.svg https://img.shields.io/badge/Link-Install-blue.svg https://img.shields.io/badge/Link-GitHub-blue.svg https://img.shields.io/badge/Link-Submit_Issue-blue.svg https://img.shields.io/badge/Link-Request_Feature-blue.svg https://img.shields.io/badge/Link-Download-blue.svg

Welcome to aws_stepfunction Documentation

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aws_stepfunction-0.0.5.tar.gz (41.9 kB view hashes)

Uploaded Source

Built Distribution

aws_stepfunction-0.0.5-py2.py3-none-any.whl (46.3 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page