AWS BeanStalk

Quick and no fuss tool to take any web based application and deploy it to AWS cloud

Unlike Amplify which is React specific (this was a shock to me), BeanStalk focuses on allowing you to deploy a web application (something that can be deployed on to NodeJS, Apache, Net) using a number of different languages. It's a pipeline like CodeStar but different.

Locally in your dev environment, you organise your code the way it should look if it were deployed on a particular web server (apache, NodeJS etc). You then zip the project up (removing any unwanted files from the zip archive).

Using the AWS BeanStalk console, you upload the zipped file to your BeanStalk project. BeanStalk creates an EC2 instance, a new security group with only port 80 exposed. It then unpacks the zip extracting the files to where they should be for given web environment. It then runs it according to the web stack you initially chose when you created the BeanStalk project.

No key pair is created for the project, so SSH-ing into it isn't possible. If you use the EB cli, you have more control over how the EC2 instance is provisioned.GOTCHA

If you have designed your app to expose itself o port 5000 for example, it cannot be reached with the default BeanStalk configuration which creates a security group with only port 80 exposed. You will need to either modify the security group or add another rule.