Created
December 7, 2018 23:39
-
-
Save djosephsen/f45c02f7085c47050fae85fb6aa76b91 to your computer and use it in GitHub Desktop.
Revisions
-
djosephsen created this gist
Dec 7, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,69 @@ #!/usr/bin/env bash BUCKET=${1} PREFIX=${2} function error { echo "ERROR:: ${@}" exit 2 } function warn { echo "WARNING:: ${@}" } function debug { if [ -n "${DEBUG}" ] then echo "DEBUG:: ${@}" fi } function info { echo "INFO:: ${@}" } debug "Checking for jq binary" which jq > /dev/null || error "No jq binary found" debug "Checking for bucket" [[ "${BUCKET}" ]] || error "No bucket defined" debug "Checking for prefix" if [ -z "${PREFIX}" ] then warn "No prefix (\$2) given, recursive delete on entire bucket: ${BUCKET}" else PREFIX="--prefix ${PREFIX}" fi VERSIONS=$(aws s3api list-object-versions --bucket ${BUCKET} ${PREFIX}) if [ -n "${VERSIONS}" ] then VERS=$(echo ${VERSIONS}| jq '.Versions[] | select(.IsLatest | not)') if echo ${VERSIONS} | grep -q '.DeleteMarkers' then DELS=$(echo ${VERSIONS} | jq '.DeleteMarkers[]') fi fi info "Deleting versions..." for VER in $(echo ${VERS} | jq -r '@base64') do N=$(echo ${VER} | base64 --decode | jq -r '.Key') V=$(echo ${VER} | base64 --decode | jq -r '.VersionId') debug "aws s3api delete-object --bucket ${BUCKET} --key ${N} --version-id ${V}" out=$(aws s3api delete-object --bucket ${BUCKET} --key ${N} --version-id ${V}) info "Deleted: $(echo ${out} | jq -c '.')" done info "Done. Deleting markers..." for DEL in $(echo ${DELS} | jq -r '@base64') do N=$(echo ${DEL} | base64 --decode | jq -r '.Key') V=$(echo ${DEL} | base64 --decode | jq -r '.VersionId') debug "aws s3api delete-object --bucket ${BUCKET} --key ${N} --version-id ${V}" out=$(aws s3api delete-object --bucket ${BUCKET} --key ${N} --version-id ${V}) info "Deleted: $(echo ${out} | jq -c '.')" done debug "Done"