Skip to content

Instantly share code, notes, and snippets.

@weavenet
Created May 4, 2015 05:21
Show Gist options
  • Save weavenet/f40b09847ac17dd99d16 to your computer and use it in GitHub Desktop.
Save weavenet/f40b09847ac17dd99d16 to your computer and use it in GitHub Desktop.

Revisions

  1. Brett W. created this gist May 4, 2015.
    36 changes: 36 additions & 0 deletions delete_all_object_versions.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,36 @@
    #!/bin/bash

    bucket=$1

    set -e

    echo "Removing all versions from $bucket"

    versions=`aws s3api list-object-versions --bucket $bucket |jq '.Versions'`
    markers=`aws s3api list-object-versions --bucket $bucket |jq '.DeleteMarkers'`
    let count=`echo $versions |jq 'length'`-1

    if [ $count -gt -1 ]; then
    echo "removing files"
    for i in $(seq 0 $count); do
    key=`echo $versions | jq .[$i].Key |sed -e 's/\"//g'`
    versionId=`echo $versions | jq .[$i].VersionId |sed -e 's/\"//g'`
    cmd="aws s3api delete-object --bucket $bucket --key $key --version-id $versionId"
    echo $cmd
    $cmd
    done
    fi

    let count=`echo $markers |jq 'length'`-1

    if [ $count -gt -1 ]; then
    echo "removing delete markers"

    for i in $(seq 0 $count); do
    key=`echo $markers | jq .[$i].Key |sed -e 's/\"//g'`
    versionId=`echo $markers | jq .[$i].VersionId |sed -e 's/\"//g'`
    cmd="aws s3api delete-object --bucket $bucket --key $key --version-id $versionId"
    echo $cmd
    $cmd
    done
    fi