AWS Elastic Beanstalk
Upload your code and Elastic Beanstalk builds the AWS setup to run it (EC2 instances, a load balancer, an Auto Scaling group) in your own account, where you can still see and change every piece.
- What it is
- Platform as a service (PaaS)
- Type
- Managed service on AWS
- Made by
- Amazon Web Services
- License
- Proprietary
- Facts checked
- 12 October 2026
What it is
You create an application, upload a version of your code as a source bundle, and launch it into an environment. For a web server environment in Standard mode, Elastic Beanstalk creates an Application Load Balancer by default, an Auto Scaling group of EC2 instances, security groups, CloudWatch alarms that drive scaling, and an S3 bucket for code and logs. It launches all of this through a CloudFormation stack whose template you can open, and gives the environment a URL such as myapp.us-west-2.elasticbeanstalk.com. A host manager on each instance deploys the code, rotates logs and reports health. A worker environment instead runs a daemon that pulls messages from an SQS queue and POSTs each one to your app on localhost.
A platform is an operating system, language runtime, web server and Elastic Beanstalk components, packaged as an AMI. Current platforms cover Docker, Go, Java SE, Tomcat, .NET Core on Linux, .NET on Windows Server, Node.js, PHP, Python and Ruby; the Linux ones run Amazon Linux 2023. New versions roll out with all-at-once, rolling, rolling with an extra batch, immutable or traffic-splitting deployments, or blue/green by swapping two environments’ URLs. Elastic Beanstalk itself is free: you pay for the EC2 instances, load balancers and other resources it creates.
Since September 17, 2026 there is also Cluster mode. Instead of dedicated instances per environment, Elastic Beanstalk runs your app as a container image on an EKS cluster that it creates and shares between your environments, with nodes supplied by EKS Auto Mode and replicas scaled between a minimum and maximum. You pay for the EKS cluster and Auto Mode charges on top of the EC2 capacity.
Why teams pick it
- No charge for the service itself; compute is billed at EC2 rates, so Reserved Instances, Savings Plans and Spot all apply
- Nothing is hidden: you can pick instance types, SSH into instances, and add any CloudFormation resource to the environment’s template from
.ebextensionsfiles - Five deployment policies plus blue/green CNAME swaps cover most release styles without extra tooling
- Worker environments come with a managed SQS queue, a daemon that delivers messages over HTTP, and cron-style periodic tasks
Watch out for
- In Standard mode every environment has its own instances and load balancer, and Auto Scaling always keeps at least one instance running, so many small apps add up
- Platform versions are retired when their components reach end of life, and moving to an incompatible platform version requires a blue/green deployment
- The default all-at-once deployment updates instances in place, so the app can be briefly unavailable unless you choose another policy
- Cluster mode uses its own configuration namespaces and none of the classic compute ones apply, so an existing environment’s settings have to be rewritten to move to it
Alternatives
What all platform as a service (paas) have in common →How it fits with other technologies
What AWS Elastic Beanstalk uses
- AWS Elastic Beanstalkruns Standard environments onAmazon EC2
- AWS Elastic Beanstalkputs web environments behindAWS Application Load Balancer
- AWS Elastic Beanstalkruns Cluster mode environments onAmazon EKS
- AWS Elastic Beanstalkfeeds worker environments fromAmazon SQS
- AWS Elastic Beanstalkstores application versions inAmazon S3
Create an environment with the EB CLI, deploy, then swap blue/green · bash
eb init shop-api --region eu-west-1 \
--platform "Python 3.13 running on 64bit Amazon Linux 2023"
eb create shop-blue --instance_type t3.small \
--min-instances 2 --max-instances 6
eb deploy shop-blue
# Release a risky change to a second environment, then swap URLs
eb create shop-green
eb swap shop-blue --destination_name shop-greenSee it in a real stack
No architecture uses AWS Elastic Beanstalk yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2011–2026
By 2011, developers who didn’t want to manage servers could use platforms such as Heroku for Ruby on Rails, several of which ran on AWS. They were simple but hid the stack underneath. Amazon announced AWS Elastic Beanstalk in public beta on January 19, 2011, as a way to get the same convenience without giving up control: upload your app and it provisions capacity, load balancing, auto-scaling and health monitoring, while every resource stays visible in your account.
Jeff Barr’s launch post explained that the beanstalk was “built using a number of existing AWS services, not from magic beans”: EC2 instances, an Elastic Load Balancer and an Auto Scaling group. The beta supported only Java web apps packaged as WAR files and run on Tomcat. In a post of the same day, Werner Vogels said AWS wanted to let many development platforms bloom rather than build one, and that Elastic Beanstalk targeted both app developers and platform builders who wanted control of the stack.
Other languages followed: PHP with Git-based deploys in March 2012, then Node.js, Python, Ruby and .NET, and Docker in April 2014. In September 2026 AWS added Cluster mode, which packs many applications onto a shared EKS cluster instead of giving each one its own instances.
Why it’s built this way
- Built from ordinary AWS resources in your account
- Vogels wrote that Elastic Beanstalk “stays true to the AWS principles by not locking customers into a black box”: the instances, load balancer and scaling group it creates are normal resources you can inspect and tune.
- Gradual control instead of a fixed platform
- Barr described letting developers start with no configuration and then take over pieces as needed: choose the instance type, log in to instances, or build a custom AMI from the default one.
- No charge beyond the resources
- AWS charged nothing for Elastic Beanstalk itself, only for the EC2 and other resources it created, so a small app could run within the AWS Free Usage Tier.
Timeline
- 2011
Public beta on January 19, for Java apps on Tomcat
- 2012
PHP support and Git-based deployment
- 2014
Docker support, joining Node.js, PHP, Python, .NET, Java and Ruby
- 2026
Cluster mode runs many applications on a shared EKS cluster
- AWS What’s New: Introducing AWS Elastic Beanstalk (Beta) (Jan 2011)
- AWS News Blog: Introducing AWS Elastic Beanstalk (Jan 2011)
- Werner Vogels: AWS Elastic Beanstalk, a quick and simple way into the cloud (Jan 2011)
- AWS News Blog: Build PHP apps using Git-based deployment (Mar 2012)
- Werner Vogels: A thousand platforms (Mar 2012)
- AWS News Blog: AWS Elastic Beanstalk for Docker (Apr 2014)
- Elastic Beanstalk release notes: Cluster Mode (Sep 2026)
Sources13 · facts checked 12 October 2026
- Elastic Beanstalk docs: What is AWS Elastic Beanstalk?
- Elastic Beanstalk docs: Concepts
- Elastic Beanstalk docs: Web server environments
- Elastic Beanstalk docs: Getting started (environment resources)
- Elastic Beanstalk docs: Worker environments
- Elastic Beanstalk docs: Load balancer for your environment
- Elastic Beanstalk docs: Adding and customizing environment resources
- Elastic Beanstalk docs: Deployment policies and settings
- Elastic Beanstalk docs: Blue/green deployments
- Elastic Beanstalk docs: Beanstalk Cluster architecture
- Elastic Beanstalk platforms: Supported platforms
- EB CLI reference: eb init, eb create and eb swap
- AWS Elastic Beanstalk pricing