Skip to content

Basics

  • BeanStalk is Platform As a Service(PAAS)
  • EB provides Managed Application Environments
  • EB is fully customizeable
  • Under the hood it orchestrates various AWS services like EC2, Load Balancers etc
  • Applications might need changes to be compatible with EB

Platforms

  • EB supports various runtime environments in 3 ways
  • Native Support
    • The natively supported environments as of now (9th Sept 24) are Docker, Go, Java SE, Tomcat, .Net Core for Linux & Windows, Node.js, PHP, Python & Ruby
  • Single & Multi Dockerized Support as well as PreConfigured Docket
  • Custom platforms with Packer

Applications

  • It is a container for everything that is required to run a piece of software e.g. Infrastructure, Configurations, Code etc
  • Application version means a specifically labelled version of code that runs inside an EB Application
  • Each of this labelled version is stored in S3. They are called as Source Bundles

Environments

  • These are divisions or sub containers within an EB Application
  • Examples are Dev, UAT, Prod environments
  • Environments actually own or encapsulate the Infra
  • Within an EB application, a specific Application version gets deployed in an environment
  • Each environment can belong to either a WebServer Tier or a Worker Tier
  • Web Server Tier - Receives Http requests from the user through an elastic load balancer (ELB)
  • Worker Tier - It receives its tasks from an SQS queue
  • Each environment has its own DNS CName
  • Blue Green deployments can be easily achieved by simply performing a CName Swap between environments

Customization

  • .ebextensions is used to customize the EB application
  • Any file that is inside an .ebextensions folder, which is in YAML or JSON format and has .config extension is used as configuration definition file
  • The file needs to be in CloudFormation format
  • option_settings configuration element allows to set options on resources
  • Resources element allows additinal new resources to be configured
  • Various other CFN elements can be used in these files

Points to Ponder

  • App changes or tweaks are required to work with EB
  • For any unsupported platform, the dockerized version can be used
  • RDS/Databases should be outside EB
  • EB uses CloudFormation to provision infrastructure
  • To enable HTTPS on EB either apply SSL certificate directly to LoadBalancer or do it through .ebextensions
  • A new EB environment can be created by cloning existing environment. Clone copies RDS instances but does not copy data. Also unmanaged changes are not cloned