Amazon Simple Workflow Service Limits
Amazon SWF places limits on the sizes of certain workflow parameters, such as on the number of domains per account and on the size of the workflow execution history. These limits are designed to prevent erroneous workflows from consuming all of the resources of the system, but are not hard limits. If you find that your application is frequently exceeding these limits, you can request a service limit increase.
Topics
General Account Limits for Amazon SWF
Maximum registered domains – 100
This limit includes both registered and deprecated domains.
Maximum workflow and activity types – 10,000 each per domain
This limit includes both registered and deprecated types.
API call limit – Beyond infrequent spikes, applications may be throttled if they make a large number of API calls in a very short period of time.
Maximum request size – 1 MB per request
This is the total data size per Amazon SWF API request, including the request header and all other associated request data.
Limits on Workflow Executions
Maximum open workflow executions – 100,000 per domain
This count includes child workflow executions.
Maximum workflow execution time – 1 year
Maximum workflow execution history size – 25,000 events
Maximum child workflow executions – 1,000 per workflow execution.
Workflow execution idle time limit – 1 year (constrained by workflow execution time limit)
You can configure workflow timeouts to cause a timeout event to occur if a particular stage of your workflow takes too long.
Workflow retention time limit – 90 days
After this time, the workflow history can no longer be retrieved or viewed. There is no further limit to the number of closed workflow executions that are retained by Amazon SWF.
If your use case requires you to go beyond these limits, you can use features Amazon SWF provides to continue executions and structure your applications using child workflow executions. If you find that you still need a limits increase, see How to Request an Amazon SWF Service Limits Increase.
Limits on Task Executions
Maximum pollers per task list – 100 per host, per tasklist
There are 10 hosts available, so the limit of pollers per task list is 1000 total. However, if a single host receives 101 pollers on a particular task list, a LimitExceededException will result.
Maximum task execution time – 1 year (constrained by workflow execution time limit)
You can configure activity timeouts to cause a timeout event to occur if a particular stage of your activity task execution takes too long.
Maximum time SWF will keep a task in the queue – 1 year (constrained by workflow execution time limit)
You can configure default activity timeouts during activity registration that will cause a timeout event to occur if a particular stage of your activity task execution takes too long. You can also override the default activity timeouts when you schedule an activity task in your decider code.
Maximum open activity tasks – 1,000 per workflow execution.
This limit includes both activity tasks that have been scheduled and those being processed by workers.
Maximum open timers – 1,000 per workflow execution
Maximum input/result data size – 32,000 characters
This limit affects activity or workflow execution result data, input data when scheduling activity tasks or workflow executions, and input sent with a workflow execution signal.
Maximum decisions in a decision task response – varies
Due to the 1 MB limit on the maximum API request size, the number of decisions returned in a single call to RespondDecisionTaskCompleted will be limited according to the size of the data used by each decision, including the size of any input data provided to scheduled activity tasks or to workflow executions.
Amazon SWF throttling limits
In addition to the service limits described previously, certain Amazon SWF API calls and decision events are throttled to maintain service bandwidth, using a token bucket scheme. If your rate of requests consistently exceeds the rates that are listed here, you can request a throttle limit increase.
Throttling limits are per account / region. Limits in us-east-1 are slightly different than in other regions; refer to the section that corresponds to your region:
Throttling limits for us-east-1
API limits
| API name | Bucket size | Refill rate / s |
|---|---|---|
| CountClosedWorkflowExecutions | 1000 | 1 |
| CountOpenWorkflowExecutions | 1000 | 1 |
| CountPendingActivityTasks | 100 | 1 |
| CountPendingDecisionTasks | 100 | 1 |
| DeprecateActivityType | 100 | 1 |
| DeprecateDomain | 50 | 1 |
| DeprecateWorkflowType | 100 | 1 |
| DescribeActivityType | 1000 | 1 |
| DescribeDomain | 100 | 1 |
| DescribeWorkflowExecution | 1000 | 1 |
| DescribeWorkflowType | 1000 | 1 |
| GetWorkflowExecutionHistory | 1000 | 5 |
| ListActivityTypes | 100 | 1 |
| ListClosedWorkflowExecutions | 100 | 1 |
| ListDomains | 50 | 1 |
| ListOpenWorkflowExecutions | 100 | 1 |
| ListWorkflowTypes | 100 | 1 |
| PollForActivityTask | 1000 | 100 |
| PollForDecisionTask | 1000 | 142 |
| RecordActivityTaskHeartbeat | 1000 | 1 |
| RegisterActivityType | 100 | 1 |
| RegisterDomain | 50 | 1 |
| RegisterWorkflowType | 100 | 1 |
| RequestCancelWorkflowExecution | 1000 | 5 |
| RespondActivityTaskCanceled | 1000 | 100 |
| RespondActivityTaskCompleted | 1000 | 100 |
| RespondActivityTaskFailed | 1000 | 100 |
| RespondDecisionTaskCompleted | 1000 | 142 |
| SignalWorkflowExecution | 1000 | 5 |
| StartWorkflowExecution | 1000 | 25 |
| TerminateWorkflowExecution | 1000 | 10 |
Decision limits
| Decision | Bucket size | Refill rate / s |
|---|---|---|
| RequestCancelExternalWorkflowExecution | 100 | 10 |
| ScheduleActivityTask | 500 | 100 |
| SignalExternalWorkflowExecution | 100 | 10 |
| StartChildWorkflowExecution | 500 | 2 |
| StartTimer | 1000 | 142 |
Throttling limits for other regions
API limits
| API name | Bucket size | Refill rate / s |
|---|---|---|
| CountClosedWorkflowExecutions | 1000 | 1 |
| CountOpenWorkflowExecutions | 1000 | 1 |
| CountPendingActivityTasks | 100 | 1 |
| CountPendingDecisionTasks | 100 | 1 |
| DeprecateActivityType | 100 | 1 |
| DeprecateDomain | 50 | 1 |
| DeprecateWorkflowType | 100 | 1 |
| DescribeActivityType | 1000 | 1 |
| DescribeDomain | 100 | 1 |
| DescribeWorkflowExecution | 1000 | 1 |
| DescribeWorkflowType | 1000 | 1 |
| GetWorkflowExecutionHistory | 1000 | 5 |
| ListActivityTypes | 100 | 1 |
| ListClosedWorkflowExecutions | 100 | 1 |
| ListDomains | 50 | 1 |
| ListOpenWorkflowExecutions | 100 | 1 |
| ListWorkflowTypes | 100 | 1 |
| PollForActivityTask | 1000 | 10 |
| PollForDecisionTask | 1000 | 12 |
| RecordActivityTaskHeartbeat | 1000 | 1 |
| RegisterActivityType | 100 | 1 |
| RegisterDomain | 50 | 1 |
| RegisterWorkflowType | 100 | 1 |
| RequestCancelWorkflowExecution | 1000 | 5 |
| RespondActivityTaskCanceled | 1000 | 10 |
| RespondActivityTaskCompleted | 1000 | 10 |
| RespondActivityTaskFailed | 1000 | 10 |
| RespondDecisionTaskCompleted | 1000 | 12 |
| SignalWorkflowExecution | 1000 | 5 |
| StartWorkflowExecution | 1000 | 2 |
| TerminateWorkflowExecution | 1000 | 10 |
Decision limits
| Decision | Bucket size | Refill rate / s |
|---|---|---|
| RequestCancelExternalWorkflowExecution | 100 | 10 |
| ScheduleActivityTask | 100 | 10 |
| SignalExternalWorkflowExecution | 100 | 10 |
| StartChildWorkflowExecution | 100 | 2 |
| StartTimer | 500 | 25 |
How to Request an Amazon SWF Service Limits Increase
If you think that you will exceed any of the above limits, please use the Amazon SWF Limit Increase Form to contact the Amazon SWF team to discuss your scenario and request higher limits.

