diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b2baa45b2f6c57921309b51be8ecc36709f43535..007dada2981d11a49ada17c908df09b729afe357 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,14 +3,18 @@ image: netroby/alpine-rsync
 #project specific variables can be defines here, or overridden project settings
 variables:
   SERVER_DEV: ebi-cli.ebi.ac.uk
+  S3_BUCKET_DEV: dev.ebi.emblstatic.net
   SCRIPT_DEV: ~/bin/update-ebi-framework
   DEV_URL: http://wwwdev.ebi.ac.uk/web_guidelines/EBI-Framework
   SERVER_PROD: ebi-cli.ebi.ac.uk
+  S3_BUCKET_PROD: origin.ebi.emblstatic.net
   SCRIPT_PROD: ~/bin/update-ebi-framework-prod
   PROD_URL: http://www.ebi.ac.uk/web_guidelines/EBI-Framework
 # do not define here, put in project variables
   SSH_USER: username
   SSH_KEY: secret-key
+  AWS_KEY: key
+  AWS_SECRET: secret-key
   
 #setup ssh keys
 .deploy_setup: &deploy_setup
@@ -44,3 +48,22 @@ deploy_live:
     name: live
     url: ${LIVE_URL}
     
+deploy_aws_dev:
+  image: ebiwd/alpine-ssh
+  stage: deploy
+  before_script:
+    - add-aws-key ${AWS_KEY} ${AWS_SECRET}
+  script: 
+    - bin/deploy-aws
+  only: 
+    - branches
+
+deploy_aws_live:
+  image: ebiwd/alpine-ssh
+  stage: deploy
+  before_script:
+    - add-aws-key ${AWS_KEY} ${AWS_SECRET}
+  script: 
+    - bin/deploy-aws prod
+  only: 
+    - tags
diff --git a/bin/deploy-aws b/bin/deploy-aws
new file mode 100755
index 0000000000000000000000000000000000000000..41260fb9c50ec84e02bfd8c2ff98e23819b5a9d3
--- /dev/null
+++ b/bin/deploy-aws
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# abort on error
+set -e;
+# abort on undefined variable
+set -u;
+
+# get current branch from git info
+PROJECT=${CI_PROJECT_NAME};
+BRANCH=${CI_COMMIT_REF_NAME};
+
+# set project base
+DEPLOY_PATH="web_guidelines/${PROJECT}/${BRANCH}";
+
+if [ "${1:-''}" = "prod" ]; then
+  S3_BUCKET=${S3_BUCKET_PROD};
+else
+  S3_BUCKET=${S3_BUCKET_DEV};
+fi;
+
+# push to AWS (exclude bin and .git)
+aws s3 sync . s3://${S3_BUCKET}/${DEPLOY_PATH} \
+  --exclude ".git*" \
+  --exclude "bin/*" \
+  ;