diff --git a/upload_to_s3_api.sh b/upload_to_s3_api.sh new file mode 100644 index 0000000000000000000000000000000000000000..617c09b0ad6ed0110a702e3edf1e2733975840e6 --- /dev/null +++ b/upload_to_s3_api.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# about the file +file_to_upload=$1 +bucket=$2 +filepath="/${bucket}/${file_to_upload}" + +# metadata +contentType="application/x-compressed-tar" +dateValue=`date -R` +signature_string="PUT\n\n${contentType}\n${dateValue}\n${filepath}" + +#s3 keys +s3_access_key=$3 +s3_secret_key=$4 + +#prepare signature hash to be sent in Authorization header +signature_hash=`echo -en ${signature_string} | openssl sha1 -hmac ${s3_secret_key} -binary | base64` + +# actual curl command to do PUT operation on s3 +curl -X PUT -T "${file_to_upload}" \ + -H "Host: object.cscs.ch:443/${bucket}" \ + -H "Date: ${dateValue}" \ + -H "Content-Type: ${contentType}" \ + -H "Authorization: AWS ${s3_access_key}:${signature_hash}" \ + https://object.cscs.ch/${bucket}/${file_to_upload}