tôi đang cố gắng để có được những kịch bản sau đây bash để làm việc (sao chép từ http://curl.haxx.se/mail/archive-2014-10/0006.html#replies):Tải tập tin cá nhân từ S3 sử dụng bash
#!/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}
Tôi nhận được một lỗi SignatureDoesNotMatch không có vấn đề gì tôi làm.
Bất kỳ ý tưởng nào về cách sửa lỗi này sẽ được đánh giá cao.
Tôi không biết nếu điều này có liên quan nhưng bạn đã bỏ một dòng mới trong giá trị 'stringToSign' đó. –
Vâng, tôi biết, đó dường như là định dạng bắt buộc. Tôi cũng thử nghiệm mà không có dòng mới, không có không gian, vv Không thành công cho đến nay, nhưng cảm ơn. – UKatz
Bạn đã thử với dòng mới bổ sung giữa 'GET' và loại nội dung? –