Elastic Beanstalk Deploying an Artifact

Deploying an artifact

gotto directory and eb init
and select all of the configs

  1. region
  2. application (create a new if needed)
  3. platform
  4. version
  5. ssh (important if you want to be able to login to the server)
  6. ssh credentials

at this point an elasticbeanstalk directory is in the project directory. We need to change the deployment from the directory files to the zip file. This is done by going into the config.yml file (which is in the elasticbeanstalk directory) and adding that directive

This is what mine looked like with the addition of the deploy / artifact

branch-defaults:
  default:
    environment: null
deploy:
  artifact: GitRepoApp.zip
global:
  application_name: GitRepoApp
  default_ec2_keyname: 
  default_platform: PHP 7.0
  default_region: us-east-1
  profile: eb-cli
  sc: null

The next thing that needs to be done is compressing your files and creating the zip file that will be deployed. If you are on a Mac the best way to do this is to run the zip command from the command line (terminal). Navigate to the directory that contains your files (use cd commands inside of terminal). Once in you directory issue the command: zip -r nameofzipfile.zip .
Don’t forget to include the ending space and period. This will include the hidden elasticbeanstalk and (soon to follow) ebextensions folder.

zip -r BA-Multi.zip .

(Option you may want to use zip -FSr BA-Multi.zip so that it will overwrite the zip file if it isn’t deleted after each use
Option 2: you will probably also want to remove git and git repo files from the zip file. That command is

zip -FSr BA-Multi.zip . -x *.git*  

now that we have a working zip file it is time to create and deploy our app.

eb create
  1. environment name (GitRepoApp)
  2. DNS Cname prefix (GitRepoApp)
  3. load balancer (1 classic)

eb create will deploy your application the first time. You can log into AWS into the elastic beanstalk all applications and see your app deploying. It will give you the status updates along with the health and event log. This will also be updating in terminal as well – however the aws elastic beanstalk dash will give more info

Failed Deployment

IF for some reason your deployment failed (bad files or something else) you don’t have to issue the eb create command. Instead you will issue eb deploy. This will reupload the zip and deploy the server with the new app.

SSH into Ec2 instance

If your application launched you should now have an ec2 unit that can be ssh’d into. This is helpful if you need to check for file/app integrity or you need to make sure your ebextensions have issued the commands they need to. To ssh into the server first find the path to the server. You can do that by going into your AWS account and clicking on EC2 Dashboard. Under running instances an ec2 unit with the name of your app should be running. Click on it and look for the information under public DNS. Copy that sting – it should look like this

example:

ec2-52-22-2-22.compute-1.amazonaws.com

to ssh into that instance you will issue the command:

ssh -i /pathtoyour/sshkey/ssh.pem ec2-user@ec2-52-22-2-22.compute-1.amazonaws.com

at this point you can check the server, navigate directories and ensure that the ec2 deployed by beanstalk is doing what it should. One area of the server you will probably be interested in is cd /var/app/current/ This directory holds all of the files that were contained in your zip file. Of course at this point they are no longer in a zip file; they have been unzipped and dumped into this directory.

Terminating your EB Instance

When you are finished with your deployment you can do a few things. You could technically stop the ec2 unit – or you could go into the elasticbeanstalk dash and stop the app from there. Another option is to issue the command

eb terminate GitRepoApp 

This will stop all the services associated with this running app.

You may also like...