- Coordinate work amongst applications
- Code runs on EC2 (not serverless)
- 1 year max runtime
- Requires you to write application code
- One time only completion is key feature that ensures that a task is assigned only once and is never duplicated.
- 💡❗ Step functions is recommended to be used for new applications, except if you need:
- external signals to intervene in the processes
- child processes that return values to parent processes
- long running up to 1 year
- Actors
- Workflow starters: Any application that initiates workflow
- Deciders: control flow activity tasks
- Activity workers: carry out the activity tasks
- Steps: Activity, Decision, Human intervention
- Tasks
- Activity task: Tell activity worker to execute its task.
- Decision task: It tells the decider the state of the workflow execution.
- Lambda task: Executes lambda
- 💡 Use case e.g. order fulfilment from web to warehouse to delivery.
- 🤗 AWS uses SWF to run their warehouses.
- Build serverless visual workflow to orchestrate your Lambda functions
- E.g. Start => Submit Job => Wait X seconds => Get Job Status => Job Compete ? next : Go back to Wait X seconds -> End
- Represent flow as a JSON 📝state machine
- Features: sequence, parallel, conditions, timeouts, error handling ...
- The steps of your workflow can exist anywhere, including in AWS Lambda functions, on Amazon EC2, or on-premises.
- Integrated with & can coordinate many AWS services: Amazon ECS, AWS Fargate, Amazon DynamoDB, Amazon SNS, Amazon SQS, AWS Batch, AWS Glue, and Amazon SageMaker.
- ❗ Maximum execution time of 1 year
- Possibility to implement human approval feature
- E.g. API gateway to send human approval accepted or not query.
- 💡 Use cases: any 📝workflow
- Monitoring
- Each executed branch can be monitored and have different steps.
- Each step has
Success
,Failed
,Cancelled
,In Progress
states.
- Can use Callback patterns
- Pauses execution of the workflow until your application returns a token.
- Supports callback patterns with Amazon ECS, Amazon SNS, Amazon SQS, AWS Fargate, and AWS Lambda.
- Can also integrate with on-premises