Download private Datei aus S3 mit bash

Ich versuche, das folgende bash-Skript zu arbeiten (kopiert von http://curl.haxx.se/mail/archive-2014-10/0006.html#replies):

#!/bin/sh 
file=path/to/file 
bucket=your-bucket 
resource="/${bucket}/${file}" 
contentType="application/x-compressed-tar" 
dateValue="`date +'%a, %d %b %Y %H:%M:%S %z'`" 
stringToSign="GET 
${contentType} 
${dateValue} 
${resource}" 
s3Key=xxxxxxxxxxxxxxxxxxxx 
s3Secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
signature=`/bin/echo -n "$stringToSign" | openssl sha1 -hmac ${s3Secret} -binary |      base64` 
curl -H "Host: ${bucket}.s3.amazonaws.com" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \ 
-H "Authorization: AWS ${s3Key}:${signature}" \ 
https://${bucket}.s3.amazonaws.com/${file}

Ich bin immer ein SignatureDoesNotMatch Fehler egal was ich mache.

Irgendwelche Ideen auf, wie man dieses Problem beheben wird sehr geschätzt.

  • Ich weiß nicht, ob dies ist verwandt, aber Sie ließ einen Zeilenumbruch in das stringToSign Wert.
  • Ja, ich weiß, dass scheint zu sein, die von Ihnen gewünschten format. Habe ich auch getestet, ohne neue Linien, ohne Leerzeichen, etc. Bisher ohne Erfolg, aber danke.
  • Sie versucht, mit den zusätzlichen Zeilenumbruch zwischen GET und der content-type auch?
  • Ja: signingString="GET\n\n${contentType}\n${dateValue}\n${resource}"
InformationsquelleAutor UKatz | 2014-12-26
Schreibe einen Kommentar