- Developer centric view of deploying an application on AWS.
- Manages infrastructure for the code by making following very easy:
- Configuration of databases
- Configuration of load balancers
- Configuration of auto-scaling
- Instance / OS configuration / deployment is handled by Beanstalk but are configurable.
- Pricing: Elastic BeanStalk is free! You pay for the underlying resources.
- It deploys common HA architectures with EC2, ALB, ASG, RDS, etc..
- Single instance deployments: good for dev
- LB + ASG: good for prod + pre-production
- ASG only: good for non-web apps in production (workers, etc.)
- Still have full control over the configuration
- Support for many platforms: Go, Java SE, Java with Tomcat, .NET on Windows Server with IIS, Node.js, PHP, Python, Ruby, Packer Builder, Single Container Docker, multi-container Docker, Preconfigured Docker
- Deployment:
- Has three components:
- Application
- Application version (increased in each deployment)
- Environment name e.g. dev, test, prod.
- You deploy application versions to environments can promote application versions to the next environment.
- Rollback feature to previous application version
- Full control over lifecycle of environments
- If not supported, you can write your custom platform (advanced)
- Has three components:
- Can run containers:
- Single Container Docker: 1 container per Beanstalk instance.
- Multi-container Docker: Many docker instances within same Beanstalk instance.
- Preconfigured Docker Containers: e.g. Java with Glassfish or Python with uWSGI.
- Configurations
- Presets
- Low cost (free tier eligible): One EC2 + Elastic IP
- High availability: ELB + ASG
- Custom configuration: Customize everything
- Software
- Environment (e.g. NodeJs) version and environment properties
- AWS X-Ray enabled/disabled
- Rotate logs (disabled/enabled)
- Log streaming (disabled/enabled)
- Instances
- Instance type, image ID, root volume type, root volume size, root volume IOPS, security groups
- Capacity
- Environment type (e.g. load balancing, auto-scaling)
- Availability zones
- Instances
- Load balancer: type, listener (e.g. 1), processes (e.g. 1), rules (e.g. 1)
- Rolling updates and deployments
- Deployment policy (e.g. all at once)
- Rolling updates (disabled/enabled)
- Health check(enabled/disabled)
- Security
- Service role (e.g.
aws-elasticbeanstalk-service-role
) - VM key pair
- VM instance profile.
- Service role (e.g.
- Monitoring
- Health reporting system (enhanced)
- Ignore HTTP 4xx (disabled/enabled)
- Health event log streaming (disabled/enabled)
- Managed updates (enabled/disabled)
- Notifications with e.g. (email address)
- Network: VPC
- Database: engine, instance class, storage (GB), multi-AZ)
- Presets