• It is a high-level deployment tool
  • Helps you get an app from desktop to the web in a matter of minutes.
  • handles the details of hosting environment for
    • capacity provisioning
    • load balancing
    • scaling
    • application health monitoring
  • can also be referred as platform configuration to define
    • infrastructure 
    • software stack
  • When you deploy app, Elastic Beanstalk provisions a set of AWS resources
  • AWS resources can include Amazon EC2 instances, alarms, a load balancer, security groups, and more.

Using Beanstalk

  • First create an application
  • upload application version as application source bundle (like Java .war file) to Elastic Beanstalk
  • give information about application.
  • Elastic Beanstalk automatically launches an environment and creates and configures the AWS resources needed to run code.
  • After environment is launched, you can then manage the environment and deploy new application versions.

Elastic Beanstalk workflow is as

After creating and deploying application, information about the application—including metrics, events, and environment status, is available through

  • the AWS Management Console, APIs
  • Command Line Interfaces and
  • unified AWS CLI

Beanstalk Terms

Application

  • It is a logical collection of Elastic Beanstalk components
  • includes
    • environments
    • versions
    •  environment configurations.
  • application is similar to a folder.

Application Version

  • It is a specific, labeled iteration of deployable code for a web application.
  • It points to S3 object having deployable code like  a Java WAR file.
  • It is part of an application.
  • Applications can have multiple versions
  • Each application version is unique.
  • In a running environment, deploy any application version

Environment

  • It is a collection of AWS resources running an application version.
  • It runs only one application version at a time
  • Same or different application versions can run in many environments simultaneously.
  • After creating environment, Elastic Beanstalk provisions resources needed to run application version.

Environment Tier

  • It designates type of application that the environment runs
  • It determines what resources Elastic Beanstalk provisions to support it.
  • An application serving HTTP requests runs in a web server environment tier.
  • It is to be selected if launching an Elastic Beanstalk environment

Environment Configuration

  • Identifies parameters and settings which define behavior of environment and its resources.
  • If environment’s configuration settings are changed, Elastic Beanstalk automatically applies the changes to existing resources

Saved Configuration

  • It is a template to be used as a starting point for creating unique environment configurations.
  • Can create and modify saved configurations
  • Apply saved configurations to environments by 
    • Elastic Beanstalk console
    • EB CLI
    • AWS CLI or API.
  • saved configurations are referred as configuration templates  by API and AWS CLI

Platform

  • It is a combination of
    • operating system
    • programming language runtime
    • web server
    • application server
    • Elastic Beanstalk components.

Web Server Environments

Sample web server environment tier, and their working.

Worker Environments

worker environment tier’s AWS resources include

  • Auto Scaling group,
  • one or more Amazon EC2 instances
  • an IAM role.
  • SQS queue
  • Elastic Beanstalk installs required files for programming language
  • daemon also runs on each EC2 instance in Auto Scaling group to read messages from SQS queue

Components and their interactions

Menu