17
votes

In the documentation it states that the EB CLI is replaced by AWS CLI but all of the documentation is still talking about EB CLI.

I have created an application in Elastic Beanstalk console and now I'm ready to start developing. I have all the tools installed on Ubuntu and I've already tested it locally. Now I want to deploy it to Elastic Beanstalk. How do I do this with AWS CLI?

2
After you install aws cli, you will have to execute commands using aws cli elasticbeanstalk check-dns-availability <options> - Shibashis
Where in the documentation did you read about AWS CLI replacing EB CLI? I couldn't find that anywhere. - ERIK_SON

2 Answers

38
votes

You have to create a source bundle from your application, see details here: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/applications-sourcebundle.html (Or alternatively you can use AWS CodeCommit or AWS CodeBuild as source for your application.)

Then you can use the AWS CLI to create a new version from your application and deploy it to one application environment. (See the CLI documentation for EBS here.)


Create a source bundle:

zip MyCodeBundle.zip <source files>

Upload that to S3:

aws s3 cp MyCodeBundle.zip s3://a-bucket-where-you-store-your-source-bundles/

Create a new application version using the source bundle you just uploaded:

aws elasticbeanstalk create-application-version --application-name YourEBSAppName --version-label YourVersionLabel --source-bundle S3Bucket="a-bucket-where-you-store-your-source-bundles",S3Key="MyCodeBundle.zip"

And finally you update one of your environments to use that version (this is deploy even though that verb is completely missing from the new AWS CLI for EBS - this was a little confusing for me):

aws elasticbeanstalk update-environment --application-name YourEBSAppName --environment-name YourEBSEnvironmentName --version-label YourVersionLabel
2
votes

To complement @qqbenq answer, here is an example of AWS CLI deployment to beanstalk with a given deployment policy:

aws elasticbeanstalk update-environment \
    --environment-name <eb-env-name> \
    --version-label <verion-label-to-deploy> \
    --option-settings \
        Namespace=aws:elasticbeanstalk:command,OptionName=DeploymentPolicy,Value=Rolling \
        Namespace=aws:elasticbeanstalk:command,OptionName=BatchSizeType,Value=Fixed \
        Namespace=aws:elasticbeanstalk:command,OptionName=BatchSize,Value=1