Skip to content

Instantly share code, notes, and snippets.

@bchoii
Created December 19, 2022 15:44
Show Gist options
  • Save bchoii/60c06fbfd4b9ec72389a8dd1ba387bea to your computer and use it in GitHub Desktop.
Save bchoii/60c06fbfd4b9ec72389a8dd1ba387bea to your computer and use it in GitHub Desktop.
bash script for signed download from s3 bucket
S3_SECRET="secret"
AWS_REGION="ap-southeast-1"
S3_BUCKET="s3-bucket"
S3_FOLDER="s3-folder"
TARGET_FILE="targetFile.txt"
FILE_PATH="/${S3_BUCKET}/${S3_FOLDER}/${TARGET_FILE}"
CONTENT_TYPE="text/plain"
DATE_VALUE=`date -R`
SIGN_STRING="GET\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n${FILE_PATH}"
SIGN_HASH=`echo -en ${SIGN_STRING} | openssl dgst -sha1 -hmac ${S3_SECRET} -binary | base64`
curl \
-H "Host: ${S3_BUCKET}.s3-${AWS_REGION}.amazonaws.com" \
-H "Date: ${DATE_VALUE}" \
-H "Content-Type: ${CONTENT_TYPE}" \
-H "Authorization: AWS ${S3_KEY}:${SIGN_HASH}" \
-o ${TARGET_FILE} \
"https://${S3_BUCKET}.s3-${AWS_REGION}.amazonaws.com/${S3_FOLDER}/${TARGET_FILE}"
# simple handling when curl exit code is not 0
CURL_OUTPUT=$?
if [[ $CURL_OUTPUT -ne 0 ]];
then
echo "Encountered error when using curl to AWS S3."
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment