-
-
Save opthakur/47e6c9f0d50787c9e6181eee4a1b4000 to your computer and use it in GitHub Desktop.
Compare the last two versions of a file stored in a S3 bucket
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 characters
#!/bin/bash | |
#This script needs awscli, jq and colordiff. Please install them for your environment | |
#This script also needs the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION. | |
#Please set them using the export command as follows or set them using envrc | |
#export AWS_ACCESS_KEY_ID=<Your AWS Access Key ID> | |
#export AWS_SECRET_ACCESS_KEY=<Your AWS Secret Access Key> | |
#export AWS_DEFAULT_REGION=<Your AWS Default Region> | |
set -e | |
if [ -z $1 ] || [ -z $2 ]; then | |
echo "Usage:" | |
echo "version_compare.sh *bucket_name* *file_name*" | |
echo | |
echo "Example" | |
echo "version_compare.sh bucket_name folder/filename.extension" | |
echo | |
exit 1; | |
fi | |
aws_bucket=$1 | |
file_key=$2 | |
echo Getting the last 2 versions of the file at ${file_key}.. | |
echo | |
echo Executing: | |
cat << EOF | |
aws s3api list-object-versions --bucket ${aws_bucket} --prefix ${file_key} --max-items 2 | |
EOF | |
echo | |
versions=$(aws s3api list-object-versions --bucket ${aws_bucket} --prefix ${file_key} --max-items 2) | |
version_1=$( jq -r '.["Versions"][0]["VersionId"]' <<< "${versions}" ) | |
version_2=$( jq -r '.["Versions"][1]["VersionId"]' <<< "${versions}" ) | |
mkdir -p state_comparison_files | |
echo Getting the latest version ${version_1} of the file at ${file_key}.. | |
echo | |
echo Executing: | |
cat << EOF | |
aws s3api get-object --bucket ${aws_bucket} --key ${file_key} --version-id ${version_1} state_comparison_files/${version_1} | |
EOF | |
aws s3api get-object --bucket ${aws_bucket} --key ${file_key} --version-id ${version_1} state_comparison_files/${version_1} > /dev/null | |
echo | |
echo Getting older version ${version_2} of the file at ${file_key}.. | |
echo | |
echo Executing: | |
cat << EOF | |
aws s3api get-object --bucket ${aws_bucket} --key ${file_key} --version-id ${version_2} state_comparison_files/${version_2} | |
EOF | |
aws s3api get-object --bucket ${aws_bucket} --key ${file_key} --version-id ${version_2} state_comparison_files/${version_2} > /dev/null | |
echo | |
echo Comparing the different versions. | |
echo If no differences are found, nothing will be shown | |
colordiff --unified state_comparison_files/${version_2} state_comparison_files/${version_1} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment