Cloud Platforms are normally highly generic and configurable and it’s easy to loose overview, what can be configured or modified where. So I assembled some of the main high level concepts for AWS Elastic Beanstalk.
Level 0: Concepts
Elastic Beanstalk is structured around the 3 high level concepts.
A Version of an ( Docker) Application is running in one Environment
Elastic Beanstalk allows you to run in parallel
Multiple Versions of multiple (Docker) Applications in multiple Environments
The Dashboard will show you all deployed Applications which can be running in multiple
In the screenshot below we have one Docker Application „ curationApp“ which has to two environments „ curationApp-prod“ and „ curationApp-test"
An Environment may run one of your released docker Application Versions. You could now „ Deploy“ one of your versions to one of your Environments.
Level 1: Concepts
It’s exposed to the Internet via a Domain Name Endpoint, <EnvironmentName>-<Id>.elasticbeanstalk.com.
It’s processing can be checked via Logs, Realtime Monitors, Events or Alarms.
An Environment maps to a EC2 Instance (orange box) which is running an Amazon Linux version, on a Docker container infrastructure.
The Main Workflow consists of the following step:
- Baseline your Docker Application Directory (e.g. checkin to git)
- Create an new Application Version ZIP File of your baselined Docker Application
- Transfer the Application Version ZIP File to your Amazon S3
- Configure an Beanstalk Application Version item
- Deploy the new Beanstalk Application Version to a Beanstalk Environment
- The Deploy will Restart and Reconfigure the Environment