Amazon Simple Workflow Service (Amazon SWF) is a workflow service for building scalable, resilient applications. Whether automating business processes for finance or insurance applications, building sophisticated data analytics applications, or managing cloud infrastructure services, Amazon SWF reliably coordinates all of the processing steps within an application.
With traditional development approaches, it is both time-consuming and costly to build and track processing steps that run at different times and have different durations, while ensuring they are executed reliably and without duplication. When the execution of applications is distributed across multiple systems, the coordination of processing steps across those systems presents an added challenge. Using Amazon SWF, developers can structure the various processing steps in an application as “tasks” that drive work in distributed applications, and Amazon SWF coordinates these tasks in a reliable and scalable manner. Amazon SWF manages task execution dependencies, scheduling, and concurrency based on a developer’s application logic. The service stores tasks, reliably dispatches them to application components, tracks their progress, and keeps their latest state.
Amazon SWF is a fully managed service, with no hardware or software to administer, scale, tune, patch or upgrade. Amazon SWF provides simple API calls that can be executed from code written in any language and run on your EC2 instances, or any of your machines located anywhere in the world that can access the Internet. On-premises machines can simply open an Internet connection to request tasks from SWF APIs, requiring no changes to firewall rules. Detailed reporting on the current status and execution history of your workflows is available through the AWS Management Console.
Read Amazon CTO Werner Vogels' Amazon SWF blog post for more on how Amazon SWF helps you leverage distributed and asynchronous processing in your applications.
Using Amazon SWF to manage workflows within your application is easy. The Amazon SWF service acts as the coordination hub for all of the different components of your application:
Maintaining application state
Tracking workflow executions and logging their progress
Holding and dispatching tasks
Controlling which tasks each of your application hosts will be assigned to execute
To use Amazon SWF you simply:
Use the AWS Management Console or the Amazon SWF APIs to specify the names of workflows.
Use the Amazon SWF APIs to “start” a new workflow, which results in a particular sequence of workflow tasks, called a “workflow execution,” being kicked into action.
Use the Amazon SWF APIs from your worker machines (a "worker" is a component of your application which handles specific tasks) to establish the task order, manage conditional flows, and execute loops for a workflow execution.
Use the Amazon SWF APIs from your worker machines to request and execute workflow tasks in the cloud or on premises.
Monitor the status and progress of workflow executions and their associated tasks in the AWS Management Console.
The sample walkthrough in the AWS Management Console takes you through the steps for registering and running a sample application. Please refer to the Documentation for details on the Amazon SWF service and APIs.
Amazon SWF replaces the complexity of custom-coded workflow solutions and process automation software with a fully managed web service. This eliminates the need for developers to manage the infrastructure plumbing of process automation so they can focus their energy on the unique functionality of their application.
Amazon SWF seamlessly scales with your application’s usage. No manual administration of the workflow service is required as you add more workflows to your application or increase the complexity of your workflows.
Amazon SWF lets you write your application components and coordination logic in any programming language and run them in the cloud or on-premises.
As part of AWS’s Free Usage Tier, Amazon SWF offers the following each month to new and existing customers:
1,000 workflow executions can be started at no charge
10,000 tasks, timers, signals, and markers can be used in aggregate at no charge
30,000 workflow-days can be used at no charge. A workflow-day refers to each 24-hour period that an execution is either open or retained in Amazon SWF.
Free Tier for data transfer is applicable as per AWS’s Free Usage Tier**
A workflow is a set of tasks executed in a certain order (sometimes with a set of conditional flows or loops). Each time that a workflow is executed, it is considered a distinct workflow execution. You pay for workflow executions when you start them (i.e. their first task becomes available for application hosts to execute) and for each 24-hour period until they are completed. The first 24 hours of workflow execution are free.
Tasks, Markers, Timers and Signals
Until a workflow execution is completed, your worker or client machines will execute additional tasks, may add “markers” (custom workflow execution log entries), start timers, or receive signals. For each of these you pay:
All charges are metered daily and billed monthly.
Data transfer “in” and “out” refers to transfer into and out of Amazon SWF. Data transferred between Amazon SWF and other AWS services (e.g. Amazon EC2 where workers and deciders may be deployed) within a single region is free of charge (i.e., $0.00 per GB). Data transferred between Amazon SWF and other AWS services in different regions will be charged at Internet Data Transfer rates on both sides of the transfer.
* Your free usage is calculated each month and automatically applied to your bill – free usage does not accumulate.
** As part of AWS’s Free Usage Tier, AWS customers will receive free 15 GB of data transfer out each month aggregated across all AWS services for one year.
*** Data transfer out rate tiers aggregate outbound data transfer across Amazon EC2, Amazon S3, Amazon RDS, Amazon SimpleDB, Amazon DynamoDB, Amazon SWF, Amazon SQS, Amazon SNS, AWS Storage Gateway, and Amazon VPC.
Example Cost Calculation
To illustrate Amazon SWF pricing, consider a simple video processing application with three tasks: download a video, encode it, and store the encoded video in Amazon S3. This application is used to encode 10,000 videos, each of which comprises a unique workflow execution. The workers and deciders in this application are all running on Amazon EC2 in the same region as Amazon SWF. The cost incurred for running 10,000 workflow executions of this workflow daily is $1.75 as follows:
$1.00 for starting 10,000 workflow executions (10,000 x $0.0001)
$0.75 for initiating tasks ($0.000025 per task x 3 tasks per workflow execution x 10,000 workflow executions)
We assume a video can be encoded and uploaded to S3 in less than 24 hours. As a result the workflow execution completes within 24 hours of being started and there is no ongoing workflow execution charge.
Let’s suppose you also want to have Amazon SWF retain information about the encoding workflow executions for 7 days after they complete. The cost for retaining information about the workflow executions is $0.35 ($0.000005 per day per execution x 7 workflow-days of retention x 10,000 workflow executions).
In total the Amazon SWF cost to coordinate the encoding and uploading of 10,000 videos and to retain information about the associated workflow executions and processing steps for 7 days is: $2.10 ($1.75 for running the workflow executions + $0.35 for retaining information on them).
AWS GovCloud Region
AWS GovCloud is an AWS Region designed to allow U.S. government agencies and contractors to move more sensitive workloads into the cloud by addressing their specific regulatory and compliance requirements. For pricing and more information on the new AWS GovCloud Region, please visit the AWS GovCloud web page.
Amazon SWF is a fully managed workflow service for building scalable, resilient applications. Amazon SWF provides simple API calls that can be executed from code written in any language and run on your EC2 instances, or any of your machines located anywhere in the world that can access the Internet.
Amazon SWF acts as a coordination hub with which your application hosts interact. You create desired workflows with their associated tasks and any conditional logic you wish to apply and store them with Amazon SWF. Each time you execute a workflow, it is considered a distinct workflow execution. You program your application components to request various tasks to be performed in your workflow execution and Amazon SWF coordinates the tasks getting done, in the order you specified, on your hosts (whether the hosts are located in the cloud or on premises). Applications communicate with Amazon SWF using APIs to record success or failure of tasks. Amazon SWF then either continues the sequence of tasks by assigning the next workflow task to an application host, or by re-running a failed task depending on your business logic.
Log in to the AWS Management Console to start an Amazon SWF workflow execution. Alternatively, you can start a workflow execution via our Amazon SWF APIs. Amazon SWF employs a simple web service interface that is easy to use and highly flexible:
StartWorkflowExecution: starts a sequence of workflow tasks and makes the first task available to one of your application hosts.
DescribeWorkflowExecution: provides status of your workflow executions and tasks.
PollForActivityTask: your application hosts (in the cloud or on premises) request and execute workflow tasks in a continuous loop.
RespondActivityTaskCompleted: an application host tells Amazon SWF that it successfully completed a task. Amazon SWF will then continue the workflow execution by making the next task available to an application host.
TerminateWorkflowExecution: stop driving a particular workflow execution forward. Amazon SWF will not assign any more tasks of this particular workflow execution to application host.
The best way to understand Amazon SWF is to review the the documentation. Use the Launch Sample Walkthrough feature in the AWS Management Console to run a sample workflow that will introduce you to the basic Amazon SWF concepts.
“Of all the improvements obtained from using Amazon SWF for our computation platform, the most important is that it allowed us to quickly and efficiently start using the data for their true purpose: identifying cures for human diseases." -Dr. Brig Mecham