AWS Elastic Beanstalk is the fastest and simplest way to get an application up and running on AWS. Developers can simply upload their application code and the service automatically handles all the details such as resource provisioning, load balancing, auto-scaling, and monitoring. Elastic Beanstalk is ideal if you have a standard PHP, Java, Python, Ruby, Node.js, .NET, Go, or Docker application that can run on an app server with a database. Elastic Beanstalk uses Auto Scaling and Elastic Load Balancing to easily support highly variable amounts of traffic. You can start small and scale up.
Once an application is running, Elastic Beanstalk provides several management features such as:
- Easily deploy new application versions to running environments using different deployment options (or rollback to a previous version).
- Access built-in CloudWatch monitoring metrics such as average CPU utilization, request count, and average latency.
- Receive e-mail notifications through Amazon Simple Notification Service (Amazon SNS) when application health changes or application servers are added or removed.
- Access server log files without needing to login to the application servers.
- Quickly restart the application servers on all Amazon EC2 instances with a single command.
- Enable regular, automatic updates to the underlying platform running your application such as the AMI, operating system, language and framework, and application or proxy server.
With Elastic Beanstalk, developers retain full control over the AWS resources powering their application, and can perform a variety of functions by simply adjusting default configuration settings from the Elastic Beanstalk management console, including:
- Selecting the most appropriate Amazon EC2 instance type that matches the CPU and memory requirements of their application
- Choosing from several available database and storage options such as Amazon RDS, Amazon DynamoDB, Microsoft SQL Server, Oracle, IBM DB2, or Informix.
- Enabling login access to Amazon EC2 instances for immediate and direct troubleshooting
- Quickly improving application reliability by running in more than one Availability Zone
- Enhancing application security by enabling HTTPS protocol on the load balancer
- Adjusting application server settings (e.g. JVM settings) and passing environment variables
- Running other application components, such as a memory caching service, side-by-side in Amazon EC2
- Adjust Auto Scaling settings to control the metrics and thresholds used to determine when to add or remove instances from an environment
Elastic Beanstalk allows you to deploy an application quickly while retaining as much control as you wish to have over the underlying infrastructure. You start by creating an application version, which is simply a labeled iteration (e.g. "Version 1.5") of your application's deployable code, which you store in Amazon S3. For example, an application version refers to a specific Git deployment of a PHP application. Elastic Beanstalk provides a number of tools to make creating application versions easy including the AWS Management Console, Git deployment and the command line interface, the AWS Toolkit for Visual Studio, and the AWS Toolkit for Eclipse. Next, you specify which application version you wish to deploy, and launch it into an environment. An environment represents the AWS resources (e.g. load balancer, Auto Scaling group, and EC2 instances) created specifically to run your application. When you launch an environment, Elastic Beanstalk automatically handles the deployment details of capacity provisioning, load balancing, auto-scaling, and application health monitoring without you having to specify anything regarding the size or type of these resources, and notifies you once the environment has been launched. You can also deploy a different application version to a running environment if, for example, you have a newer version of your code you wish to deploy, or if you want to roll back to a previous version.
An environment using the default settings will run a single Amazon EC2 micro instance (application server) and an Elastic Load Balancer. The EC2 instance is configured for Auto Scaling, which means that additional instances will be added automatically to handle any peaks in workload or traffic (and incremental instances will be discarded if traffic subsides). Elastic Beanstalk provides your application with a URL (e.g. http://myapp.elasticbeanstalk.com/), which can be typed into a web browser to view your running application. The load balancer also distributes incoming traffic across multiple Amazon EC2 instances as your application scales up and down, and automatically routes incoming traffic to only healthy instances to provide a reliable environment for your application. Each Amazon EC2 instance is built from an Amazon Machine Image (AMI), which contains all the information needed to create a new instance of a server. Elastic Beanstalk uses the Amazon Linux AMI or the Windows Server 2012 R2 AMI by default. These AMIs contain all the software to act as both a web server and application server (e.g., Linux, Apache, and PHP). If you wish to run more than 10 environments, upload more than 500 application versions, or launch more than 20 Amazon EC2 instances, please complete the AWS Elastic Beanstalk limit request form and we will evaluate your request promptly.
Your use of this service is subject to the Amazon Web Services Customer Agreement.