| AWS Elastic Beanstalk | |
| Developer Guide | |
| What is AWS Elastic Beanstalk? | |
| With Elastic Beanstalk you can deploy web applications into the AWS Cloud on a variety of | |
| supported platforms. You build and deploy your applications. Elastic Beanstalk provisions Amazon | |
| EC2 instances, configures load balancing, sets up health monitoring, and dynamically scales your | |
| environment. | |
| In addition to web server environments, Elastic Beanstalk also provides worker environments which | |
| you can use to process messages from an Amazon SQS queue, useful for asynchronous or longrunning tasks. For more information, see Elastic Beanstalk worker environments. | |
| 1 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Supported platforms | |
| Elastic Beanstalk supports applications developed in Go, Java, .NET, Node.js, PHP, Python, | |
| and Ruby. Elastic Beanstalk also supports Docker containers, where you can choose your own | |
| programming language and application dependencies. When you deploy your application, Elastic | |
| Supported platforms | |
| 2 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Beanstalk builds the selected supported platform version and provisions one or more AWS | |
| resources, such as Amazon EC2 instances, in your AWS account to run your application. | |
| You can interact with Elastic Beanstalk through the Elastic Beanstalk console, the AWS Command | |
| Line Interface (AWS CLI), or the EB CLI, a high-level command line tool designed specifically for | |
| Elastic Beanstalk. | |
| You can perform most deployment tasks, such as changing the size of your fleet of Amazon | |
| EC2 instances or monitoring your application, directly from the Elastic Beanstalk web interface | |
| (console). | |
| To learn more about how to deploy a sample web application using Elastic Beanstalk, see Learn | |
| how to get started with Elastic Beanstalk. | |
| Application deploy workflow | |
| To use Elastic Beanstalk, you create an application, then upload your application source bundle | |
| to Elastic Beanstalk. Next, you provide information about the application, and Elastic Beanstalk | |
| automatically launches an environment and creates and configures the AWS resources needed to | |
| run your code. | |
| After you create and deploy your application and your environment is launched, you can manage | |
| your environment and deploy new application versions. Information about the application— | |
| including metrics, events, and environment status—is made available through the Elastic Beanstalk | |
| console, APIs, and Command Line Interfaces. | |
| The following diagram illustrates Elastic Beanstalk workflow: | |
| Pricing | |
| There is no additional charge for Elastic Beanstalk. You pay only for the underlying AWS resources | |
| that your application consumes. For details about pricing, see the Elastic Beanstalk service detail | |
| page. | |
| Application deploy workflow | |
| 3 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Next steps | |
| We recommend the tutorial, Getting started tutorial, to start using Elastic Beanstalk. The tutorial | |
| steps you through creating, viewing, and updating a sample Elastic Beanstalk application. | |
| Next steps | |
| 4 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Learn how to get started with Elastic Beanstalk | |
| With Elastic Beanstalk you can deploy, monitor, and scale web applications and services. Typically, | |
| you will develop your code locally then deploy it to Amazon EC2 server instances. Theses instances, | |
| also called environments, run on platforms that can be upgraded through the AWS console or the | |
| command line. | |
| To get started, we recommend deploying a pre-built sample application directly from the console. | |
| Then, you can learn how to develop locally and deploy from the command line in the the section | |
| called “QuickStart for PHP”. | |
| There is no cost for using Elastic Beanstalk, but standard fees do apply to AWS resources that you | |
| create during the course of this tutorial until you delete them at the end. The total charges are | |
| typically less than a dollar. For information about how to minimize charges, see AWS free tier. | |
| After completing this tutorial, you will understand the basics of creating, configuring, deploying, | |
| updating, and monitoring an Elastic Beanstalk application with environments running on Amazon | |
| EC2 instances. | |
| Estimated duration: 35-45 minutes | |
| 5 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| What you will build | |
| Your first Elastic Beanstalk application will consist of a single Amazon EC2 environment running | |
| the PHP sample on a PHP managed platform. | |
| Elastic Beanstalk application | |
| An Elastic Beanstalk application is a container for Elastic Beanstalk components, including | |
| environments where your application code runs on platforms provided and managed by Elastic | |
| Beanstalk, or in custom containers that you provide. | |
| Environment | |
| An Elastic Beanstalk environment is a collection of AWS resources running together including | |
| an Amazon EC2 instance. When you create an environment, Elastic Beanstalk provisions the | |
| necessary resources into your AWS account. | |
| Platform | |
| A platform is a combination of an operating system, programming language runtime, web | |
| server, application server, and additional Elastic Beanstalk components. Elastic Beanstalk | |
| provides manged platforms, or you can provide your own platform in a container. | |
| Elastic Beanstalk supports platforms for different programming languages, application servers, | |
| and Docker containers. When you create an environment, you must choose the platform. You can | |
| upgrade the platform, but you cannot change the platform for an environment. | |
| Switching platforms | |
| If you need to change programming languages, you must create and switch to a new | |
| environment on a different platform. | |
| Step 1 - Create an application | |
| To create your example application, you'll use the Create application console wizard. It creates an | |
| Elastic Beanstalk application and launches an environment within it. | |
| Reminder: an environment is a collection of AWS resources required to run your application code. | |
| What you will build | |
| 7 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| To create an application | |
| 1. | |
| Open the Elastic Beanstalk console. | |
| 2. | |
| Choose Create application. | |
| 3. | |
| For Application name enter getting-started-app. | |
| The console provides a six step process for creating an application and configuring an environment. | |
| For this quick start, you'll only need to focus on the first two steps, then you can skip ahead to | |
| review and create your application and environment. | |
| To configure an environment | |
| 1. | |
| In Environment information, for Environment name enter: gs-app-web-env. | |
| 2. | |
| For Platform, choose the PHP platform. | |
| 3. | |
| For Application code and Presets, accept the defaults (Sample application and Single instance), | |
| then choose Next. | |
| To configure service access | |
| Next, you need two roles. A service role allows Elastic Beanstalk to monitor your EC2 instances and | |
| upgrade you environment’s platform. An EC2 instance profile role permits tasks such as writing logs | |
| and interacting with other services. | |
| To create the Service role | |
| 1. | |
| For Service role, choose Create role. | |
| 2. | |
| For Trusted entity type, choose AWS service. | |
| Step 1 - Create an application | |
| 8 | |
| AWS Elastic Beanstalk | |
| 3. | |
| For Use case, choose Elastic Beanstalk – Environment. | |
| 4. | |
| Choose Next. | |
| 5. | |
| Verify that Permissions policies include the following, then choose Next: | |
| Developer Guide | |
| • AWSElasticBeanstalkEnhancedHealth | |
| • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy | |
| 6. | |
| Choose Create role. | |
| 7. | |
| Return to the Configure service access tab, refresh the list, then select the newly created | |
| service role. | |
| To create the EC2 instance profile | |
| 1. | |
| Choose Create role. | |
| 2. | |
| For Trusted entity type, choose AWS service. | |
| 3. | |
| For Use case, choose Elastic Beanstalk – Compute. | |
| 4. | |
| Choose Next. | |
| 5. | |
| Verify that Permissions policies include the following, then choose Next: | |
| • AWSElasticBeanstalkWebTier | |
| • AWSElasticBeanstalkWorkerTier | |
| • AWSElasticBeanstalkMulticontainerDocker | |
| 6. | |
| Choose Create role. | |
| 7. | |
| Return to the Configure service access tab, refresh the list, then select the newly created EC2 | |
| instance profile. | |
| To finish configuring and creating your application | |
| 1. | |
| Skip over EC2 key pair. | |
| We'll show you other ways to connect to your Amazon EC2 instances through the Console. | |
| 2. | |
| Choose Skip to Review to move over several optional steps. | |
| Optional steps: networking, databases, scaling parameters, advanced configuration for updates, | |
| monitoring, and logging. | |
| 3. | |
| On the Review page which shows a summary of your choices, choose Submit. | |
| Step 1 - Create an application | |
| 9 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Congratulations! | |
| You have created an application and configured an environment! Now you need to wait for | |
| the resources to deploy. | |
| Step 2 - Deploy your application | |
| When you create an application, Elastic Beanstalk sets up the environments for you. You just need | |
| to sit back and wait. | |
| The initial deploy can take up to five minutes to create the resources. Updates will take less time | |
| because only changes will be deployed to your stack. | |
| When you create the example application, Elastic Beanstalk creates the following resources: | |
| • EC2 instance – An Amazon EC2 virtual machine configured to run web apps on the platform you | |
| selected. | |
| Every platform runs a different set of software, configuration files, and scripts to support a | |
| specific language version, framework, web container, or combination thereof. Most platforms | |
| use either Apache or nginx as a reverse proxy to forward web traffic to your web app, serve static | |
| assets, and generate access and error logs. You can connect to your Amazon EC2 instances to | |
| view configuration and logs. | |
| Step 2 - Deploy your application | |
| 10 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| • Instance security group – An Amazon EC2 security group will be created to allow incoming | |
| requests on port 80, so inbound traffic on a load balancer can reach your web app. | |
| • Amazon S3 bucket – A storage location for your source code, logs, and other artifacts. | |
| • Amazon CloudWatch alarms – Two CloudWatch alarms are created to monitor the load on your | |
| instances and scale them up or down as needed. | |
| • AWS CloudFormation stack – Elastic Beanstalk uses AWS CloudFormation to deploy the | |
| resources in your environment and make configuration changes. You can view the resource | |
| definition template in the AWS CloudFormation console. | |
| • Domain name – A domain name that routes to your web app in the form : | |
| subdomain.region.elasticbeanstalk.com. | |
| Elastic Beanstalk creates your application, launches an environment, makes an application version, | |
| then deploys your code into the environment. During the process, the console tracks progress and | |
| displays event status in the Events tab. | |
| Step 2 - Deploy your application | |
| 11 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Your application is ready! | |
| After you see your application health change to Ok, you can browse to your web | |
| application's website. | |
| Step 3 - Explore the Elastic Beanstalk environment | |
| You'll start exploring your deployed application environment from the Environment overview | |
| page in the console. | |
| To view the environment and your application | |
| 1. | |
| Open the Elastic Beanstalk console, and in the Regions list, select your AWS Region. | |
| 2. | |
| In the navigation pane, choose Environments, and then choose the name of your environment | |
| from the list. | |
| 3. | |
| Choose Go to environment to browse your application! | |
| (You can also choose the URL link listed for Domain to browse your application.) | |
| The connection will be HTTP (not HTTPS), so you might see a warning in your browser. | |
| Step 3 - Explore the environment | |
| 13 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Back in the Elastic Beanstalk console, the upper portion shows the Environment overview with | |
| top level information about your environment, including name, domain URL, current health status, | |
| running version, and the platform that the application is running on. The running version and | |
| platform are essential for troubleshooting your currently deployed application. | |
| After the overview pane, you will see recent environment activity in the Events tab. | |
| Step 3 - Explore the environment | |
| 14 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| While Elastic Beanstalk creates your AWS resources and launches your application, the environment | |
| is in a Pending state. Status messages about launch events are continuously added to the list of | |
| Events . | |
| The environment's Domain is the URL for your deployed web application. In the left navigation | |
| pane, Go to environment also takes you to your domain. Similarly, the left navigation pane has | |
| links that correspond to the various tabs. | |
| Take note of the Configuration link in the left navigation pane. which displays a summary of | |
| environment configuration option values, grouped by category. | |
| Environment configuration settings | |
| Take note of the Configuration link in the left navigation pane. You can view and edit | |
| detailed environment settings, such as service roles, networking, database, scaling, | |
| managed platform updates, memory, health monitoring, rolling deployment, logging, and | |
| more! | |
| The various tabs contain detailed information about your environment: | |
| Step 3 - Explore the environment | |
| 15 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Understanding concepts in Elastic Beanstalk | |
| Becoming familiar with the concepts and terms will help you gain an understanding needed for | |
| deploying your applications with Elastic Beanstalk. | |
| 142 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Application | |
| An Elastic Beanstalk application is a container for Elastic Beanstalk components, including | |
| environments, versions, and environment configurations. Within an Elastic Beanstalk application, | |
| you manage all the resources relevant to running your code. | |
| Application version | |
| In Elastic Beanstalk, an application version refers to a specific, labeled iteration of deployable code | |
| for a web application. An application version points to an Amazon Simple Storage Service (Amazon | |
| S3) object that contains the deployable code, such as a Java WAR file. | |
| An application version is part of an application. Applications can have many versions and each | |
| application version is unique. In a running environment, you can deploy any application version you | |
| already uploaded to the application, or you can upload and immediately deploy a new application | |
| version. For example, you could upload multiple application versions to test differences between | |
| them. | |
| Environment | |
| An environment is a collection of AWS resources running an application version. Each environment | |
| runs only one application version at a time, however, you can run the same application version | |
| or different application versions in many environments simultaneously. When you create an | |
| environment, Elastic Beanstalk provisions the resources needed in your AWS account to run the | |
| application version you specified. | |
| Environment tier | |
| When you launch an Elastic Beanstalk environment, you first choose an environment tier. The | |
| environment tier designates the type of application that the environment runs and determines | |
| what resources Elastic Beanstalk provisions to support it. An application that serves HTTP requests | |
| runs in a web server environment tier. A backend environment that pulls tasks from an Amazon | |
| Simple Queue Service (Amazon SQS) queue runs in a worker environment tier. | |
| Environment configuration | |
| An environment configuration identifies a collection of parameters and settings that define | |
| how an environment and its associated resources behave. When you update an environment’s | |
| Application | |
| 143 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| configuration settings, Elastic Beanstalk automatically applies the changes to existing resources or | |
| deletes and deploys new resources (depending on the type of change). | |
| Saved configuration | |
| A saved configuration is a template that you can use as a starting point for creating unique | |
| environment configurations. You can create and modify saved configurations, and apply them to | |
| environments, using the Elastic Beanstalk console, EB CLI, AWS CLI, or API. The API and the AWS | |
| CLI refer to saved configurations as configuration templates. | |
| Platform | |
| A platform is a combination of an operating system, programming language runtime, web server, | |
| application server, and Elastic Beanstalk components. You design and target your web application | |
| to a platform. Elastic Beanstalk provides a variety of platforms on which you can build your | |
| applications. | |
| For details, see Elastic Beanstalk platforms. | |
| Elastic Beanstalk web server environments | |
| The following diagram shows an example Elastic Beanstalk architecture for a web server | |
| environment tier, and shows how the components in that type of environment tier work together. | |
| Saved configuration | |
| 144 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| The environment is the heart of the application. In the diagram, the environment is shown within | |
| the top-level solid line. When you create an environment, Elastic Beanstalk provisions the resources | |
| required to run your application. AWS resources created for an environment include one elastic | |
| load balancer (ELB in the diagram), an Auto Scaling group, and one or more Amazon Elastic | |
| Compute Cloud (Amazon EC2) instances. | |
| Every environment has a CNAME (URL) that points to a load balancer. The environment | |
| has a URL, such as myapp.us-west-2.elasticbeanstalk.com. This URL is aliased in | |
| Amazon Route 53 to an Elastic Load Balancing URL—something like abcdef-123456.uswest-2.elb.amazonaws.com—by using a CNAME record. Amazon Route 53 is a highly available | |
| and scalable Domain Name System (DNS) web service. It provides secure and reliable routing to | |
| your infrastructure. Your domain name that you registered with your DNS provider will forward | |
| requests to the CNAME. | |
| The load balancer sits in front of the Amazon EC2 instances, which are part of an Auto Scaling | |
| group. Amazon EC2 Auto Scaling automatically starts additional Amazon EC2 instances to | |
| accommodate increasing load on your application. If the load on your application decreases, | |
| Amazon EC2 Auto Scaling stops instances, but always leaves at least one instance running. | |
| The software stack running on the Amazon EC2 instances is dependent on the container type. | |
| A container type defines the infrastructure topology and software stack to be used for that | |
| environment. For example, an Elastic Beanstalk environment with an Apache Tomcat container uses | |
| the Amazon Linux operating system, Apache web server, and Apache Tomcat software. For a list of | |
| supported container types, see Elastic Beanstalk supported platforms. Each Amazon EC2 instance | |
| that runs your application uses one of these container types. In addition, a software component | |
| called the host manager (HM) runs on each Amazon EC2 instance. The host manager is responsible | |
| for the following: | |
| • Deploying the application | |
| • Aggregating events and metrics for retrieval via the console, the API, or the command line | |
| • Generating instance-level events | |
| • Monitoring the application log files for critical errors | |
| • Monitoring the application server | |
| • Patching instance components | |
| • Rotating your application's log files and publishing them to Amazon S3 | |
| Web server environments | |
| 145 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| The host manager reports metrics, errors and events, and server instance status, which are | |
| available via the Elastic Beanstalk console, APIs, and CLIs. | |
| The Amazon EC2 instances shown in the diagram are part of one security group. A security group | |
| defines the firewall rules for your instances. By default, Elastic Beanstalk defines a security | |
| group, which allows everyone to connect using port 80 (HTTP). You can define more than one | |
| security group. For example, you can define a security group for your database server. For more | |
| information about Amazon EC2 security groups and how to configure them for your Elastic | |
| Beanstalk application, see EC2 security groups. | |
| Elastic Beanstalk worker environments | |
| AWS resources created for a worker environment tier include an Auto Scaling group, one or more | |
| Amazon EC2 instances, and an IAM role. For the worker environment tier, Elastic Beanstalk also | |
| creates and provisions an Amazon SQS queue if you don’t already have one. When you launch a | |
| worker environment, Elastic Beanstalk installs the necessary support files for your programming | |
| language of choice and a daemon on each EC2 instance in the Auto Scaling group. The daemon | |
| reads messages from an Amazon SQS queue. The daemon sends data from each message that | |
| it reads to the web application running in the worker environment for processing. If you have | |
| multiple instances in your worker environment, each instance has its own daemon, but they all read | |
| from the same Amazon SQS queue. | |
| The following diagram shows the different components and their interactions across environments | |
| and AWS services. | |
| Worker environments | |
| 146 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Amazon CloudWatch is used for alarms and health monitoring. For more information, go to Basic | |
| health reporting. | |
| For details about how the worker environment tier works, see Elastic Beanstalk worker | |
| environments. | |
| Design considerations for your Elastic Beanstalk applications | |
| Because applications deployed using AWS Elastic Beanstalk run on AWS Cloud resources, you | |
| should keep several configuration factors in mind to optimize your applications: scalability, security, | |
| persistent storage, fault tolerance, content delivery, software updates and patching, and connectivity. | |
| Each of these are covered separately in this topic. For a comprehensive list of technical AWS | |
| whitepapers, covering topics such as architecture, as well as security and economics, see AWS Cloud | |
| Computing Whitepapers. | |
| Design considerations | |
| 147 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Scalability | |
| When operating in a physical hardware environment, in contrast to a cloud environment, you can | |
| approach scalability in one of either two ways. Either you can scale up through vertical scaling | |
| or you can scale out through horizontal scaling. The scale-up approach requires that you invest | |
| in powerful hardware, which can support the increasing demands of your business. The scaleout approach requires that you follow a distributed model of investment. As such, your hardware | |
| and application acquisitions can be more targeted, your data sets are federated, and your design | |
| is service oriented. The scale-up approach can be expensive, and there's also the risk that your | |
| demand could outgrow your capacity. In this regard, the scale-out approach is usually more | |
| effective. However, when using it, you must be able to predict demand at regular intervals and | |
| deploy infrastructure in chunks to meet that demand. As a result, this approach can often lead to | |
| unused capacity and might require some careful monitoring. | |
| By migrating to the cloud, you can make your infrastructure align well with demand by leveraging | |
| the elasticity of cloud. Elasticity helps to streamline resource acquisition and release. With it, | |
| your infrastructure can rapidly scale in and scale out as demand fluctuates. To use it, configure | |
| your Auto Scaling settings to scale up or down based on the metrics for the resources in your | |
| environment. For example, you can set metrics such as server utilization or network I/O. You can | |
| use Auto Scaling for compute capacity to be added automatically whenever usage rises and for it | |
| to be removed whenever usage drops. You can publish system metrics (for example, CPU, memory, | |
| disk I/O, and network I/O) to Amazon CloudWatch. Then, you can use CloudWatch to configure | |
| alarms to trigger Auto Scaling actions or send notifications based on these metrics. For instructions | |
| on how to configure Auto Scaling, see Auto Scaling your Elastic Beanstalk environment instances. | |
| We also recommend that you design all your Elastic Beanstalk applications as stateless as possible, | |
| using loosely coupled, fault-tolerant components that can be scaled out as needed. For more | |
| information about designing scalable application architectures for AWS, see AWS Well-Architected | |
| Framework. | |
| Security | |
| Security on AWS is a shared responsibility. Amazon Web Services protects the physical resources | |
| in your environment and ensures that the Cloud is a safe place for you to run applications. You're | |
| responsible for the security of data coming in and out of your Elastic Beanstalk environment and | |
| the security of your application. | |
| Configure SSL to protect information that flows between your application and clients. To configure | |
| SSL, you need a free certificate from AWS Certificate Manager (ACM). If you already have a | |
| Scalability | |
| 148 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| certificate from an external certificate authority (CA), you can use ACM to import that your | |
| certificate. Otherwise, you can import it using the AWS CLI. | |
| If ACM isn't available in your AWS Region, you can purchase a certificate from an external CA, such | |
| as VeriSign or Entrust. Then, use the AWS Command Line Interface (AWS CLI) to upload a thirdparty or self-signed certificate and private key to AWS Identity and Access Management (IAM). The | |
| public key of the certificate authenticates your server to the browser. It also serves as the basis for | |
| creating the shared session key that encrypts the data in both directions. For instructions on how | |
| to create, upload, and assign an SSL certificate to your environment, see Configuring HTTPS for | |
| your Elastic Beanstalk environment. | |
| When you configure an SSL certificate for your environment, data is encrypted between the client | |
| and the Elastic Load Balancing load balancer for your environment. By default, encryption is | |
| terminated at the load balancer, and traffic between the load balancer and Amazon EC2 instances | |
| is unencrypted. | |
| Persistent storage | |
| Elastic Beanstalk applications run on Amazon EC2 instances that have no persistent local storage. | |
| When the Amazon EC2 instances terminate, the local file system isn't saved. New Amazon EC2 | |
| instances start with a default file system. We recommend that you configure your application to | |
| store data in a persistent data source. AWS offers a number of persistent storage services that you | |
| can use for your application. The following table lists them. | |
| Storage service | |
| Service documentation | |
| Elastic Beanstalk integration | |
| Amazon S3 | |
| Amazon Simple Storage | |
| Service Documentation | |
| Using Elastic Beanstalk with | |
| Amazon S3 | |
| Amazon Elastic File | |
| System | |
| Amazon Elastic File System | |
| Documentation | |
| Using Elastic Beanstalk with | |
| Amazon Elastic File System | |
| Amazon Elastic Block | |
| Store | |
| Amazon Elastic Block Store | |
| Amazon DynamoDB | |
| Amazon DynamoDB | |
| Documentation | |
| Persistent storage | |
| Feature Guide: Elastic Block | |
| Store | |
| Using Elastic Beanstalk with | |
| Amazon DynamoDB | |
| 149 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Storage service | |
| Service documentation | |
| Elastic Beanstalk integration | |
| Amazon Relational | |
| Database Service (RDS) | |
| Amazon Relational Database | |
| Service Documentation | |
| Using Elastic Beanstalk with | |
| Amazon RDS | |
| Note | |
| Elastic Beanstalk creates a webapp user for you to set up as the owner of application | |
| directories on EC2 instances. For Amazon Linux 2 platform versions that are released on | |
| or after Feburary 3, 2022, Elastic Beanstalk assigns the webapp user a uid (user id) and gid | |
| (group id) value of 900 for new environments. It does the same for existing environments | |
| following a platform version update. This approach keeps consistent access permission for | |
| the webapp user to permanent file system storage. | |
| In the unlikely situation that another user or process is already using 900, the operating | |
| system defaults the webapp user uid and gid to another value. Run the Linux command | |
| id webapp on your EC2 instances to verify the uid and gid values that are assigned to the | |
| webapp user. | |
| Fault tolerance | |
| As a rule of thumb, you should be a pessimist when designing architecture for the cloud. Leverage | |
| the elasticity that it offers. Always design, implement, and deploy for automated recovery from | |
| failure. Use multiple Availability Zones for your Amazon EC2 instances and for Amazon RDS. | |
| Availability Zones are conceptually like logical data centers. Use Amazon CloudWatch to get more | |
| visibility into the health of your Elastic Beanstalk application and take appropriate actions in case | |
| of hardware failure or performance degradation. Configure your Auto Scaling settings to maintain | |
| your fleet of Amazon EC2 instances at a fixed size so that unhealthy Amazon EC2 instances are | |
| replaced by new ones. If you're using Amazon RDS, then set the retention period for backups, so | |
| that Amazon RDS can perform automated backups. | |
| Content delivery | |
| When users connect to your website, their requests may be routed through a number of individual | |
| networks. As a result, users might experience poor performance due to high latency. Amazon | |
| CloudFront can help ameliorate latency issues by distributing your web content, such as images | |
| and video, across a network of edge locations around the world. Users' requests are routed to the | |
| Fault tolerance | |
| 150 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| nearest edge location, so content is delivered with the best possible performance. CloudFront | |
| works seamlessly with Amazon S3, which durably stores the original, definitive versions of your | |
| files. For more information about Amazon CloudFront, see the Amazon CloudFront Developer | |
| Guide. | |
| Software updates and patching | |
| AWS Elastic Beanstalk regularly releases platform updates to provide fixes, software updates, | |
| and new features. Elastic Beanstalk offers several options to handle platform updates. With | |
| managed platform updates your environment automatically upgrades to the latest version of a | |
| platform during a scheduled maintenance window while your application remains in service. For | |
| environments created on November 25, 2019 or later using the Elastic Beanstalk console, managed | |
| updates are enabled by default whenever possible. You can also manually initiate updates using | |
| the Elastic Beanstalk console or EB CLI. | |
| Connectivity | |
| Elastic Beanstalk needs to be able to connect to the instances in your environment to complete | |
| deployments. When you deploy an Elastic Beanstalk application inside an Amazon VPC, the | |
| configuration required to enable connectivity depends on the type of Amazon VPC environment | |
| you create: | |
| • For single-instance environments, no additional configuration is required. This is because, with | |
| these environments, Elastic Beanstalk assigns each Amazon EC2 instance a public Elastic IP | |
| address that enables the instance to communicate directly with the internet. | |
| • For load-balanced, scalable environments in an Amazon VPC with both public and private | |
| subnets, you must do the following: | |
| • Create a load balancer in the public subnet to route inbound traffic from the internet to the | |
| Amazon EC2 instances. | |
| • Create a network address translation (NAT) device to route outbound traffic from the Amazon | |
| EC2 instances in private subnets to the internet. | |
| • Create inbound and outbound routing rules for the Amazon EC2 instances inside the private | |
| subnet. | |
| • If you're using a NAT instance, configure the security groups for the NAT instance and Amazon | |
| EC2 instances to enable internet communication. | |
| • For a load-balanced, scalable environment in an Amazon VPC that has one public subnet, no | |
| additional configuration is required. This is because, with this environment, your Amazon EC2 | |
| Software updates and patching | |
| 151 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| instances are configured with a public IP address that enables the instances to communicate with | |
| the internet. | |
| For more information about using Elastic Beanstalk with Amazon VPC, see Using Elastic Beanstalk | |
| with Amazon VPC. | |
| Connectivity | |
| 152 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Elastic Beanstalk platforms | |
| AWS Elastic Beanstalk provides a variety of platforms on which you can build your applications. | |
| You design your web application to one of these platforms, and Elastic Beanstalk deploys your | |
| code to the platform version you selected to create an active application environment. | |
| Elastic Beanstalk provides platforms for different programming languages, application servers, and | |
| Docker containers. Some platforms have multiple concurrently-supported versions. | |
| Topics | |
| • Elastic Beanstalk platforms glossary | |
| • Shared responsibility model for Elastic Beanstalk platform maintenance | |
| • Elastic Beanstalk platform support policy | |
| • Elastic Beanstalk platform release schedule | |
| • Elastic Beanstalk supported platforms | |
| • Elastic Beanstalk Linux platforms | |
| • Extending Elastic Beanstalk Linux platforms | |
| Elastic Beanstalk platforms glossary | |
| Following are key terms related to AWS Elastic Beanstalk platforms and their lifecycle. | |
| Runtime | |
| The programming language-specific runtime software (framework, libraries, interpreter, vm, | |
| etc.) required to run your application code. | |
| Elastic Beanstalk Components | |
| Software components that Elastic Beanstalk adds to a platform to enable Elastic Beanstalk | |
| functionality. For example, the enhanced health agent is necessary for gathering and reporting | |
| health information. | |
| Platform | |
| A combination of an operating system (OS), runtime, web server, application server, and | |
| Elastic Beanstalk components. Platforms provide components that are available to run your | |
| application. | |
| Platforms glossary | |
| 742 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Platform Version | |
| A combination of specific versions of an operating system (OS), runtime, web server, application | |
| server, and Elastic Beanstalk components. You create an Elastic Beanstalk environment based | |
| on a platform version and deploy your application to it. | |
| A platform version has a semantic version number of the form X.Y.Z, where X is the major | |
| version, Y is the minor version, and Z is the patch version. | |
| A platform version can be in one of the following states: | |
| • Recommended – The latest platform version in a supported platform branch. This version | |
| contains the most up-to-date components and is recommended for use in production | |
| environments. | |
| • Not Recommended – Any platform version that is not the latest version in its platform | |
| branch. While these versions may remain functional, we strongly recommend updating to | |
| the latest platform version. You can use managed platform updates to help stay up-to-date | |
| automatically. | |
| You can verify if a platform version is recommended using the AWS CLI command describeplatform-version and checking the PlatformLifecycleState field. | |
| Platform Branch | |
| A line of platform versions sharing specific (typically major) versions of some of their | |
| components, such as the operating system (OS), runtime, or Elastic Beanstalk components. For | |
| example: Python 3.13 running on 64bit Amazon Linux 2023; IIS 10.0 running on 64bit Windows | |
| Server 2025. Platform branches receive updates in the form of new platform versions. Each | |
| successive platform version in a branch is an update to the previous one. | |
| The recommended version in each supported platform branch is available to you | |
| unconditionally for environment creation. A previous platform version is available to you if you | |
| were using an environment with it at the time the platform version was superceded by a new | |
| platform version. Previous platform versions lack the most up-to-date components and aren't | |
| recommended for use. | |
| A platform branch can be in one of the following states: | |
| • Supported – A current platform branch. It consists entirely of supported components. | |
| Supported components have not reached End of Life (EOL), as designated by their | |
| suppliers. It receives ongoing platform updates, and is recommended for use in production | |
| Platforms glossary | |
| 743 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| environments. For a list of supported platform branches, see Elastic Beanstalk supported | |
| platforms in the AWS Elastic Beanstalk Platforms guide. | |
| • Beta – A preview, pre-release platform branch. It's experimental in nature. It may receive | |
| ongoing platform updates for a while, but has no long-term support. A beta platform branch | |
| isn't recommended for use in production environments. Use it only for evaluation. For a list | |
| of beta platform branches, see Elastic Beanstalk Platform Versions in Public Beta in the AWS | |
| Elastic Beanstalk Platforms guide. | |
| • Deprecated – A platform branch where one or more components (such as the runtime or | |
| operating system) are approaching End of Life (EOL) or have reached EOL, as designated | |
| by their suppliers. While a deprecated platform branch continues to receive new platform | |
| versions until its retirement date, components that have reached EOL don't receive updates. | |
| For example, if a runtime version reaches EOL, the platform branch will be marked as | |
| deprecated but will continue to receive operating system updates until the platform branch | |
| retirement date. The platform branch will not continue to receive updates to the EOL runtime | |
| version. A deprecated platform branch isn't recommended for use. | |
| • Retired – A platform branch that no longer receives any updates. Retired platform branches | |
| aren't available to create new Elastic Beanstalk environments using the Elastic Beanstalk | |
| console. If your environment uses a retired platform branch, you must update to a supported | |
| platform branch to continue receiving updates. A retired platform branch isn't recommended | |
| for use. For more details about retired platform branches, see the section called “Platform | |
| support policy”. For a list of platform branches scheduled for retirement, see Retiring | |
| platform branch schedule. To see past retired platform branches, see Retired platform branch | |
| history. | |
| If your environment uses a deprecated or retired platform branch, we recommend that you | |
| update it to a platform version in a supported platform branch. For details, see the section | |
| called “Platform updates”. | |
| You can verify the state of a platform branch using the AWS CLI command describe-platformversion and checking the PlatformBranchLifecycleState field. | |
| Platform Update | |
| A release of new platform versions that contain updates to some components of the platform | |
| —OS, runtime, web server, application server, and Elastic Beanstalk components. Platform | |
| updates follow semantic version taxonomy, and can have three levels: | |
| Platforms glossary | |
| 744 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| • Major update – An update that has changes that are incompatible with existing platform | |
| versions. You may need to modify your application to run correctly on a new major version. A | |
| major update has a new major platform version number. | |
| • Minor update – An update that has changes that are backward compatible with existing | |
| platform versions in most cases. Depending on your application, you may need to modify | |
| your application to run correctly on a new minor version. A minor update has a new minor | |
| platform version number. | |
| • Patch update – An update that consists of maintenance releases (bug fixes, security updates, | |
| and performance improvements) that are backward compatible with an existing platform | |
| version. A patch update has a new patch platform version number. | |
| Managed Updates | |
| An Elastic Beanstalk feature that automatically applies patch and minor updates to the | |
| operating system (OS), runtime, web server, application server, and Elastic Beanstalk | |
| components for an Elastic Beanstalk supported platform version. A managed update applies a | |
| newer platform version in the same platform branch to your environment. You can configure | |
| managed updates to apply only patch updates, or minor and patch updates. You can also | |
| disable managed updates completely. | |
| For more information, see Managed platform updates. | |
| Shared responsibility model for Elastic Beanstalk platform | |
| maintenance | |
| AWS and our customers share responsibility for achieving a high level of software component | |
| security and compliance. This shared model reduces your operational burden. | |
| For details, see the AWS Shared Responsibility Model. | |
| AWS Elastic Beanstalk helps you perform your side of the shared responsibility model by providing | |
| a managed updates feature. This feature automatically applies patch and minor updates for an | |
| Elastic Beanstalk supported platform version. If a managed update fails, Elastic Beanstalk notifies | |
| you of the failure to ensure that you are aware of it and can take immediate action. | |
| For more information, see Managed platform updates. | |
| In addition, Elastic Beanstalk does the following: | |
| Shared responsibility model | |
| 745 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| • Publishes its platform support policy and retirement schedule for the coming 12 months. | |
| • Releases patch, minor, and major updates of operating system (OS), runtime, application server, | |
| and web server components typically within 30 days of their availability. Elastic Beanstalk | |
| is responsible for creating updates to Elastic Beanstalk components that are present on its | |
| supported platform versions. All other updates come directly from their suppliers (owners or | |
| community). | |
| We announce all updates to our supported platforms in our release notes in the AWS Elastic | |
| Beanstalk Release Notes guide. We also provide a list of all supported platforms and their | |
| components, along with a platform history, in the AWS Elastic Beanstalk Platforms guide. For more | |
| information see Supported platforms and component history. | |
| You are responsible to do the following: | |
| • Update all the components that you control (identified as Customer in the AWS Shared | |
| Responsibility Model). This includes ensuring the security of your application, your data, and any | |
| components that your application requires and that you downloaded. | |
| • Ensure that your Elastic Beanstalk environments are running on a supported platform version, | |
| and migrate any environment running on a retired platform version to a supported version. | |
| • If you’re using a custom Amazon machine image (AMI) for your Elastic Beanstalk environment, | |
| patch, maintain, and test your custom AMI so that it remains current and compatible with | |
| a supported Elastic Beanstalk platform version. For more information about managing | |
| environments with a custom AMI, see Using a custom Amazon machine image (AMI) in your | |
| Elastic Beanstalk environment. | |
| • Resolve all issues that come up in failed managed update attempts and retry the update. | |
| • Patch the OS, runtime, application server, and web server yourself if you opted out of Elastic | |
| Beanstalk managed updates. You can do this by applying platform updates manually or directly | |
| patching the components on all relevant environment resources. | |
| • Manage the security and compliance of any AWS services that you use outside of Elastic | |
| Beanstalk according to the AWS Shared Responsibility Model. | |
| Shared responsibility model | |
| 746 | |
| AWS Elastic Beanstalk | |
| Developer Guide | |
| Elastic Beanstalk platform support policy | |
| Elastic Beanstalk supports platform branches that still receive ongoing minor and patch updates | |
| from their suppliers (owners or community). For a complete definition of related terms, see Elastic | |
| Beanstalk platforms glossary. | |
| Retired platform branches | |
| When a component of a supported platform branch is marked End of Life (EOL) by its supplier, | |
| Elastic Beanstalk marks the platform branch as retired. Components of a platform branch include | |
| the following: operating system (OS), runtime language version, application server, or web server. | |
| Once a platform branch is marked as retired the following policies apply: | |
| • Elastic Beanstalk stops providing maintenance updates, including security updates. | |
| • Elastic Beanstalk no longer provides technical support for retired platform branches. | |
| • Elastic Beanstalk no longer makes the platform branch available to new Elastic Beanstalk | |
| customers for deployments to new environments. There is a 90 day grace period from the | |
| published retirement date for existing customers with active environments that are running on | |
| retired platform branches. | |
| Note | |
| A retired platform branch will not be available in the Elastic Beanstalk console. However, it | |
| will be available through the AWS CLI, EB CLI and EB API for customers that have existing | |
| environments based on the retired platform branch. Existing customers can also use the | |
| Clone environment and Rebuild environment consoles. | |
| For a list of platform branches that are scheduled for retirement see the Retiring platform branch | |
| schedule in the Elastic Beanstalk platform schedule topic that follows. | |
| For more information about what to expect when your environment’s platform branch retires, see | |
| Platform retirement FAQ. | |
| Platform support policy | |
| 747 | |