AWSDOP-C02
On this page
Beginner-friendly overview

Elastic Beanstalk

Elastic Beanstalk is AWS's platform-as-a-service (PaaS) for web applications. You give it your application code — a ZIP file, a Docker image, or a Git repository — and Beanstalk provisions and manages the underlying infrastructure: EC2 instances, load balancers, Auto Scaling groups, and RDS databases. You focus on your code; AWS handles the servers.

Who It's For

Beanstalk is designed for developers who want to deploy web applications quickly without becoming AWS infrastructure experts. If you're comfortable with EC2, VPCs, and Auto Scaling, you probably don't need Beanstalk. If you want to deploy a Python Flask app or a Java Spring Boot service and have it auto-scale without managing servers, Beanstalk is the right level of abstraction.

Supported Platforms

Beanstalk supports a range of managed platforms: Node.js, Python, Ruby, PHP, Java, .NET, Go, and Docker. Each platform is a preconfigured environment that knows how to install dependencies, start your application, and hook it into the load balancer and health reporting systems.

Environments and Deployments

A Beanstalk application is a logical container for your app. Each application has one or more environments — typically one for production and one for staging. Each environment is an independent stack of AWS resources.

Beanstalk supports several deployment strategies so you can balance speed against risk. An all-at-once deployment is fastest but causes downtime. A rolling deployment updates instances in batches with no downtime but temporarily reduces capacity. A blue/green deployment creates an entirely new environment with the new version and swaps the load balancer's CNAME when ready, enabling instant rollback by swapping back.

The Escape Hatch

One of Beanstalk's practical strengths is that it doesn't hide the underlying resources from you. All the EC2 instances, security groups, and load balancers it creates are visible and accessible in your AWS account. If you need to customize something that Beanstalk's configuration options don't cover, you can use .ebextensions configuration files (YAML/JSON) to run commands, install packages, or modify any resource during deployment.