Create, run and manage AWS Step Functions easily
Project description
sfini
Create, run and manage AWS Step Functions easily. Pronounced "SFIN-ee".
This package aims to provide a user-friendly interface into defining and
running Step Functions. Things you can do in sfini
to interact with AWS Step
Functions:
- Implement and register activities
- Define and register state machines
- Start, track and stop executions
- Run workers for activities
- Get information for registered activities and state machines
- De-register state machines and activities
Note: this is not a tool to convert Python code into a Step Functions state machine. For that, see pyawssfn.
Getting started
Prerequisites
- AWS (Amazon Web Services) account, with access to Step Functions
- AWS IAM (Identity and Access Management) credentials
Installation
pip install sfini
Usage
Documentation
Check the documentation or use the built-in help:
pydoc sfini
import sfini
help(sfini)
To build the documentation:
sphinx-build -b html docs/src/ docs/_build/
AWS Step Functions
AWS Step Functions (SFN) is a workflow-management service, providing the ability to coordinate tasks in a straight-forward fashion. Further documentation can be found in the AWS documentation.
Usage of Step Functions consists of two types: state-machines and activities. A state-machine is a graph of operations which defines a workflow of an application, comprised of multiple types of "states", or stages of the workflow. An activity processes input to an output, and is used to process a task "state" in the state-machine (multiple task states can have the same activity assigned it.
Once a state-machine is defined and registered (along with the used
activities), you run executions of that state-machine on different inputs to
run the workflow. sfini
allows you to start, stop and get the history of
these executions.
State-machines support conditional branching (and therefore loops), retries (conditional and unconditional), exception-catching, external AWS service support for running tasks, parallel execution and input/output processing. External services including AWS Lambda, so you don't have to deploy your own activity runners.
Once state-machines and activities are defined and registered, you can view and update their details in the SFN web console.
Role ARN
Every state-machine needs a role ARN (Amazon Resource Name). This is an AWS IAM role ARN which allows the state-machine to process state executions. See AWS Step Functions documentation for more information.
Example
More examples found in the documentation.
import sfini
# Define activities
activities = sfini.ActivityRegistration(prefix="test")
@activities.activity("addActivity")
def add_activity(data):
return data["a"] + data["b"]
# Define state-machine
add = sfini.Task("add", add_activity)
sm = sfini.construct_state_machine("testAdding", add)
# Register state-machine and activities
activities.register()
sm.register()
# Start activity worker
worker = sfini.Worker(add_activity)
worker.start()
# Start execution
execution = sm.start_execution(execution_input={"a": 3, "b": 42})
print(execution.name)
# testAdding_2019-05-13T19-07_0354d790
# Wait for execution and print output
execution.wait()
print(execution.output)
# 45
# Stop activity workers
worker.end()
worker.join()
# Deregister state-machine and activities
activities.deregister()
sm.deregister()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.