我正在尝试通过传递AWS请求的所需标头来使用cURL进行简单的图片上传,但我收到以下错误...
<Code>AccessDenied</Code><Message>AWS authentication requires a valid Date or x-amz-date header</Message>
以下是我传递的授权标题..
curl -X PUT -T "/some/file.jpg" \
-H "Host: bucket.s3.amazonaws.com" \
-H "Date: date" \
-H "Content-Type: image/jpg" \
-H "Authorization: AWS XXXXXXX:XXXXXXXXXX" \
https://bucket.s3.amazonaws.com/
及以下是签名的制作方式,
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
我已尝试在stringToSign和标题中传递日期,但没有运气..请帮助..
答案 0 :(得分:4)
修复了问题..原来HTTP标头需要采用RFC 7231格式。我格式化它,它工作。,下面是我使用的格式,
date -jnu +%a,\ %d\ %h\ %Y\ %T\ %Z
答案 1 :(得分:0)
有类似的问题,但得到:
Date must be in ISO-8601 'basic format'
我用它来修复:
$(date -u +"%Y-%m-%dT%H:%M:%S%z")