Published service level agreements
An AWS service level agreement is a credit policy, not an availability guarantee. It defines a monthly uptime percentage, measured per Region over a billing cycle, and the service credits AWS owes if the measurement falls short. It does not promise that a given workload will be available, and the credit is the entire remedy. Design to the numbers only in the sense of knowing what AWS is prepared to commit to.
The main compute services
Section titled “The main compute services”| Service | Regional or multi-AZ commitment | Single-resource commitment |
|---|---|---|
| Amazon EC2 | 99.99% per Region | 99.5% for a single EC2 instance |
| Amazon ECS and AWS Fargate | 99.99% for tasks or pods spread across Availability Zones | 99.5% for a single task or pod |
| Amazon EKS | 99.95% standard control plane, 99.99% provisioned control plane | Worker capacity falls under the EC2 or ECS and Fargate SLA |
| AWS Lambda | 99.95% per Region | None — there is no instance to commit to |
| AWS Elastic Beanstalk | No SLA of its own | — |
| AWS App Runner | No published SLA | — |
Two details are easy to miss. The EC2 SLA credits a single instance automatically when it is unavailable for more than six minutes in an hour, without a claim. The EKS commitment depends on which control plane the cluster runs: the standard control plane is measured in five-minute intervals at 99.95%, the provisioned control plane in one-minute intervals at 99.99%.
Services with no SLA
Section titled “Services with no SLA”Elastic Beanstalk publishes none because it does not run anything itself — it provisions EC2 instances, Elastic Load Balancing and Auto Scaling in the account, and those carry their own commitments. An availability estimate for a Beanstalk environment is an estimate built from the resources underneath it.
App Runner publishes none at all, and is now closed to new customers; see Elastic Beanstalk and App Runner for what AWS recommends in its place.
Reading a number correctly
Section titled “Reading a number correctly”A 99.99% monthly commitment allows roughly four and a half minutes of unavailability a month; 99.95% allows about twenty-two minutes; 99.5% allows about three and a half hours. Those are AWS’s allowances, not the application’s: a system depending on several services in series has a compound availability lower than the weakest of them, which is the argument for multi-AZ deployment, retries, and removing dependencies from the critical path rather than for quoting a vendor number to a customer.
Sources
Section titled “Sources”Every figure above is from the SLA AWS publishes for the service — the Amazon Compute SLA for EC2, the Amazon ECS and AWS Fargate SLA, the Amazon EKS SLA and the AWS Lambda SLA. AWS keeps the full list at AWS service level agreements; a service absent from that list has none.