- Networking (VPC and subnets)
- Compute (EC2 instances or containers)
- Load balancing (ELB/ALB/NLB)
- Persistent storage (RDS or external databases)
- Static asset hosting (S3) and CDN (CloudFront)
- Security (IAM roles, Security Groups)
- Observability (CloudWatch, logs, health checks)

- Package your app (static files or runtime-specific bundle).
- Upload the bundle to a storage location (e.g., S3 via the console, CLI, or CI pipeline).
- Create an Elastic Beanstalk application and environment, selecting platform (Node.js, Python, Docker, etc.) and instance settings.
- Elastic Beanstalk provisions and configures the resources needed to run your app (instances, load balancer, autoscaling, optional database).

- EC2 instance provisioning and configuration — single instances or Auto Scaling groups (also supports Docker and multi-container platforms via Amazon ECS).
- Load balancing — automatically configures Classic ELB, Application Load Balancer (ALB), or Network Load Balancer (NLB) depending on settings.
- Auto Scaling — scale capacity based on policies and metrics.
- Monitoring & health — integrates with CloudWatch and exposes environment health and logs.
- Platform updates — optional automated updates to OS, runtime, and application server components.
- Optional RDS provisioning — but note lifecycle behavior (see warning below).
- Development environment — fast iteration, less strict capacity settings.
- Staging environment — test releases with production-like configuration.
- Production environment — stable, monitored, and scaled for real traffic.

Developer workflow (typical)
- Create an application (logical container for versions and environments).
- Create an environment and choose runtime, instance type, scaling, and environment variables.
- Upload and deploy an application version (from console, EB CLI, or CI/CD).
- Monitor environment health, review logs/metrics, and iterate by deploying new versions.
- Simplified deployment: focus on code—AWS manages infrastructure setup.
- Managed platform updates: reduce operational burden for OS/runtime maintenance.
- Built-in scaling and load balancing: automatically configured per environment.
- Observability: CloudWatch integration and environment health pages.
- Extensible: use configuration files, platform hooks, and custom AMIs when you need customization.
Tip: Use the Elastic Beanstalk CLI (
eb), configuration files (.ebextensions, Procfile), and CI/CD pipelines to automate deployments. Keep environment-specific settings in environment variables rather than in code for safer configuration management.If you provision an RDS database as part of an Elastic Beanstalk environment, its lifecycle is tied to the environment by default. Terminating the environment can terminate the database and cause data loss. To avoid accidental data loss, create RDS instances outside of Beanstalk and attach them via configuration, or snapshot/backup the database before destroying the environment.
- Use it when you want to deploy web applications quickly without managing low-level AWS resources.
- Ideal for small-to-medium teams that prioritize developer productivity over custom infrastructure.
- Not recommended when you need highly customized networking, complex multi-service orchestration, or strict control over every resource — in those cases, consider combining Beanstalk with infrastructure-as-code (CloudFormation, CDK, Terraform) or using container orchestration directly (ECS/EKS) for greater control.