I published “wercker step” to deploy an application to Elastic Beanstalk instance using AWS CLI.
morizyun/eb-deploy - GitHub
This aritcle describes how to use the wercker step and outline of the step.
🍮 Configuration for wercker In the wercker.yml of your application use the following step definition:
- morizyun/eb-deploy: access_key: $AWS_ACCESS_KEY secret_key: $AWS_SECRET_KEY app_name: $AWS_APP_NAME env_name: $AWS_ENV_NAME s3_bucket: $AWS_S3_BUCKET_NAME region: $AWS_REGION (default: ap-northeast-1)
🗽 Outline of the wercker step Source code of the wercker step is as follows:
export UNIXTIME=`date +%s`if [ ! -n "$WERCKER_EB_DEPLOY_ACCESS_KEY " ]; then error 'Please specify access_key' exit 1 fi if [ ! -n "$WERCKER_EB_DEPLOY_SECRET_KEY " ]; then error 'Please specify secret_key' exit 1 fi if [ ! -n "$WERCKER_EB_DEPLOY_APP_NAME " ]; then error 'Please specify app_name' exit 1 fi if [ ! -n "$WERCKER_EB_DEPLOY_ENV_NAME " ]; then error 'Please specify env_name' exit 1 fi if [ ! -n "$WERCKER_EB_DEPLOY_S3_BUCKET " ]; then error 'Please specify s3 bucket' exit 1 fi if [ ! -n "$WERCKER_EB_DEPLOY_REGION " ]; then info 'set default region as ap-northeast-1' export WERCKER_EB_DEPLOY_REGION="ap-northeast-1" fi info 'Installing pip ...' sudo apt-get update sudo apt-get install -y python-pip libpython-all-dev zip info 'Installing the AWS CLI ...' ; pip install awscli; export PATH=~/.local /bin:$PATH aws --version info 'export set default values for AWS CLI tool ...' ; export AMAZON_ACCESS_KEY_ID=$WERCKER_EB_DEPLOY_ACCESS_KEY export AMAZON_SECRET_ACCESS_KEY=$WERCKER_EB_DEPLOY_SECRET_KEY export AWS_DEFAULT_REGION=$WERCKER_EB_DEPLOY_REGION export EB_VERSION_LABEL=$WERCKER_EB_DEPLOY_APP_NAME .$UNIXTIME export EB_DESCRIPTION=$WERCKER_EB_DEPLOY_ENV_NAME ,$WERCKER_GIT_BRANCH export S3_FILE_KEY=$WERCKER_EB_DEPLOY_APP_NAME /$WERCKER_EB_DEPLOY_APP_NAME .$UNIXTIME .zipexport AWS_CONFIG_FILE=$HOME /.aws/configinfo 'create .aws/config ...' ; mkdir -p $HOME /.aws echo '[default]' > $HOME /.aws/configecho 'output = json' >> $HOME /.aws/configecho "region = $WERCKER_EB_DEPLOY_REGION " >> $HOME /.aws/configecho "aws_access_key_id = $WERCKER_EB_DEPLOY_ACCESS_KEY " >> $HOME /.aws/configecho "aws_secret_access_key = $WERCKER_EB_DEPLOY_SECRET_KEY " >> $HOME /.aws/configinfo 'Compress source code ...' mkdir $WERCKER_EB_DEPLOY_APP_NAME git archive HEAD --output=$S3_FILE_KEY info 'copy code to S3 ...' aws s3 cp --acl private $S3_FILE_KEY "s3://$WERCKER_EB_DEPLOY_S3_BUCKET /$S3_FILE_KEY " info 'create elasticbeanstalk application-version ...' aws elasticbeanstalk create-application-version \ --region $WERCKER_EB_DEPLOY_REGION \ --application-name $WERCKER_EB_DEPLOY_APP_NAME \ --version-label $EB_VERSION_LABEL \ --description $EB_DESCRIPTION \ --source -bundle "{\"S3Bucket\":\"$WERCKER_EB_DEPLOY_S3_BUCKET \", \"S3Key\":\"$S3_FILE_KEY \"}" info 'update elasticbeanstalk application ...' aws elasticbeanstalk update-environment \ --environment-name $WERCKER_EB_DEPLOY_ENV_NAME \ --description $EB_DESCRIPTION ,$WERCKER_GIT_COMMIT \ --version-label $EB_VERSION_LABEL
Happy Hacking!
🚌 GitHub Repository morizyun/eb-deploy - GitHub
🐞 Special Thanks
🖥 Recommended VPS Service
VULTR provides high performance cloud compute environment for you.
Vultr has 15 data-centers strategically placed around the globe, you can use a VPS with 512 MB memory for just $ 2.5 / month ($ 0.004 / hour).
In addition, Vultr is up to 4 times faster than the competition, so please check it => Check Benchmark Results !!