Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save pecigonzalo/3f89a4b29b6fae933000ca03720e15c5 to your computer and use it in GitHub Desktop.

Select an option

Save pecigonzalo/3f89a4b29b6fae933000ca03720e15c5 to your computer and use it in GitHub Desktop.

Revisions

  1. pecigonzalo revised this gist Sep 11, 2017. 1 changed file with 23 additions and 27 deletions.
    50 changes: 23 additions & 27 deletions delete_all_object_versions.sh
    Original file line number Diff line number Diff line change
    @@ -6,31 +6,27 @@ set -e

    echo "Removing all versions from $bucket"

    versions=`aws s3api list-object-versions --bucket $bucket |jq '.Versions'`
    versions=`aws s3api list-object-versions --bucket $bucket |jq '.Versions | .[] | select(.IsLatest | not)'`
    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

    echo "removing files"
    for version in $(echo "${versions}" | jq -r '@base64'); do
    version=$(echo ${version} | base64 --decode)

    key=`echo $version | jq -r .Key`
    versionId=`echo $version | jq -r .VersionId `
    cmd="aws s3api delete-object --bucket $bucket --key $key --version-id $versionId"
    echo $cmd
    $cmd
    done

    echo "removing delete markers"
    for marker in $(echo "${markers}" | jq -r '.[] | @base64'); do
    marker=$(echo ${marker} | base64 --decode)

    key=`echo $marker | jq -r .Key`
    versionId=`echo $marker | jq -r .VersionId `
    cmd="aws s3api delete-object --bucket $bucket --key $key --version-id $versionId"
    echo $cmd
    $cmd
    done
  2. 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