Elastic Beanstalk

Start course

Compute Fundamentals for AWS offers you an updated introduction to AWS's cornerstone compute services, and provides a foundation as you build your compute skills for AWS. It includes coverage of:

- Amazon Elastic Compute Cloud (EC2)
- Elastic Load Balancers (ELBs)
- Auto Scaling
- Amazon EC2 Container Registry and Services (ECR and ECS)
- AWS Elastic Beanstalk
- AWS Lambda

Do you have questions on this course? Contact our cloud experts in our community forum.


AWS Elastic Beanstalk is a service that allows you to quickly deploy and manage applications in the AWS cloud without having to understand or manage all of the complexities of the underlying infrastructure, without restricting your choice of core control. To take advantage of AWS Elastic Beanstalk, you simply upload your application and provide some details about the configuration and AWS Elastic Beanstalk will do the rest. One of the benefits of this is that as I mentioned, you retain control over the infrastructure and can make adjustments as required. AWS Elastic Beanstalk supports a large number of popular programming languages such as Node.js, PHP, Python, Ruby, Java, Go, .NET and Docker. So, before we jump in and create a sample application, let's look at the workflow for AWS Elastic Beanstalk. The first thing you do is create an application and then upload the application version as a source bundle. Example, war file for java, etc. Next, you provide information about the application which is used to set the environmentals which will be used to create and configure the necessary AWS resources to run your code. Once it has been deployed you can then manage your environment and deploy new application versions. From the Elastic Beanstalk dashboard, click create new application in the top right-hand corner to start. On the application information page enter a unique name for the application and an optional description and then click next. On the new environment, you have a choice between two environments being a web server environment which listens for and processes HTTP requests or a worker environment which has specialized applications that have background processing tasks that listen for messages from AWS SQS. For the purposes of this demo, we will select create web server. On the environment type page we need to select our environment and from the preview find configuration drop down menu select Python which Elastic Beanstalk will use to provision the resources needed to run the application version. From the environment type drop down, we have the choice of single instance or load balancing. We will select single instance and then click next to continue. On the application version, we have an option to select sample application or upload a file from our local machine or from S3. We will select sample application and click next to continue. On the environment information page, we need to specify an environment name. And then ensure it is unique within the region environment by clicking check availability. And we can enter an optional description and when done click on next to continue. On the additional resources page, we have the option to specify if we want an RDSDB instance and to deploy within a VPC. If these are selected, additional configuration pages will be added. It is easy to add RDS instance afterwards. However, if you want this within a specific subnet and availability zone in your VPC you will need to configure that now as to change later would require the environment to be rebuilt. For the purpose of the demo we don't need these so we'll leave them blank and click next to continue. On the configuration details page, you have the option to specify the instance type, health reporting and volume settings or you can accept the default settings by clicking next. One area to point out here is that I would recommend selecting your EC2 key pair first as this will give you the ability to remote access to the system if you desire. For this demo, we will accept the defaults and click next to continue. As this is a demo, we don't have a requirement for environment tags so we will click next to continue. One the permissions page we need to define two AWS identity and access management roles. The first is the instance profile and this is applied to instances in your environment and allows them to upload blogs to Amazon S3 and perform other tasks depending on the environment type and platform. The second role is the service role. And this is used by Elastic Beanstalk to enable access to other AWS services on your behalf. As we are creating a sample application, if these roles didn't exist they would be created and set up with all the necessary permissions. Click next to continue and then review the information, and if all is correct click launch. This will take several minutes for the environment to be provisioned so I'll pause the video until this is completed. The service has been provisioned successfully and we will click on the URL at end of the title bar, which will open a new tab and you can see that the application was deployed. If you are familiar with the AWS services you may be asking yourself at this point, "I can do the same with cloud formation." Yes, you could. But remember that the intent of AWS Elastic Beanstalk is to provide an easy, fast way to deploy and manage your applications without having to worry about the underlying infrastructure. If you already have a reference architecture in mind that you want to use, then cloud formation is a viable option. But it does require some upfront investments in setting it up as well as maintenance. AWS Elastic Beanstalk is a free service. However, any services that if provisions will be subject to normal service charges. You have seen how easy it is to deploy an application using Elastic Beanstalk. And you have a great deal of control over the environment and we have only scratched the surface with this course. Please check out the intermediate and advanced courses that will go into more detail.

About the Author
Learning Paths

David's acknowledged hands on experience in the IT industry has seen him speak at international conferences, operate in presales environments and conduct actual design and delivery services.

David also has extensive experience in delivery operations. David has worked in the financial, mining, state government, federal government and public sectors across Asia Pacific and the US