Skip to content

NarrativeScience-old/sfn-workflow-client

Repository files navigation

sfn_workflow_client

CircleCI License

Enhanced, asyncio-compatible client for AWS Step Functions.

Features:

  • Trigger new executions
  • Query for state machine execution status
  • Wait for an execution to complete
  • Fetch execution history

Table of Contents:

Installation

sfn_workflow_client requires Python 3.6 or above.

pip install sfn_workflow_client

Guide

from sfn_workflow_client.enums import ExecutionStatus
from sfn_workflow_client.workflow import Workflow

# Initialize a workflow client
workflow = Workflow("my-state-machine")
# Fetch all executions
collection = await workflow.executions.fetch()
# Fetch currently running executions
collection = await workflow.executions.fetch(status=ExecutionStatus.running)
# Start a new execution
execution = await workflow.executions.create().start()
# Start a new execution and wait until it completes (useful for tests)
execution = await workflow.executions.start_sync()
# Find an execution by trace ID (for tests)
execution = await workflow.executions.fetch().find_by_trace_id("abc")
# Fetch the event history of an execution
events = await execution.events.fetch()

Development

To develop sfn_workflow_client, install dependencies and enable the pre-commit hook:

pip install pre-commit tox
pre-commit install

To run functional tests, you need to create an AWS IAM role with permissions to:

  • Create/update/delete state machines
  • Start/stop executions

Set the following environment variables:

  • AWS_ACCOUNT_ID
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_DEFAULT_REGION
  • AWS_IAM_ROLE_ARN

To run tests:

tox