尝试编写从Amazon S3存储桶下载文件的脚本。
在cURL网站上的示例中遇到了问题。下面的脚本会产生以下结果:
我们计算的请求签名与您提供的签名不匹配。 检查您的键和签名方法。
感谢任何帮助。
#!/bin/sh
file="filename.php"
bucket="my-bucket"
resource="/${bucket}/${file}"
contentType="text/html"
dateValue="`date +'%a, %d %b %Y %H:%M:%S %z'`"
stringToSign="GET\n\n${contentType}\n${dateValue}\n${resource}"
s3Key='ABCABCABCABCABCABCAB'
s3Secret='xyzxyzyxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzx'
signature=`/bin/echo -en "$stringToSign" | openssl sha1 -hmac ${s3Secret} - binary | base64`
curl -v -H "Host:lssngen-updates-east.s3.amazonaws.com" \
-H "Date:${dateValue}" \
-H "Content-Type:${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" \
https://${bucket}.s3.amazonaws.com/${file}
<?xml version="1.0" encoding="UTF-8"?> <Error><Code>TemporaryRedirect</Code><Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message><Endpoint>test-buket-edge.s3-ap-southeast-2.amazonaws.com</Endpoint><Bucket>test-buket-edge</Bucket><RequestId>BA7ABFAB1E84F97A</RequestId><HostId>1rkdVN4JvCd3m/4Ko/G66lTgfk04jsUB0e37vFvBq2UZZsYEvn6EJscjPfawKhZVlJqSrTJ2mnw=</HostId></Error>
- RaiBnod