Ahs*_*san 7 shell curl amazon-s3 amazon-web-services
我创建了一个只能访问一个存储桶的IAM用户.我已通过web和python boto测试了凭据和权限.它的工作正常.
现在我需要使用这些凭据并从该存储桶下载私有文件curl.
signature="$(echo -n "GET" | openssl sha1 -hmac "f/rHQ8yCvPthxxxxxxxXxxxx" -binary | base64)"
date="$(LC_ALL=C date -u +"%a, %d %b %Y %X %z")"
curl -H "Host: my-bucket.s3.amazonaws.com" -H "Date: $date" -H "Authorization: AWS 'XXXAJX2NY3QXXX35XXX':$signature" -H "Content-Type: 'text/plain'" https://my-bucket.s3.amazonaws.com/path/to_file.txt
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
curl您提供的AWS Access Key ID在我们的记录中不存在.
请帮忙,我该如何使用下载文件curl?我有什么遗失或通过curl命令不可能吗?
谢谢!
以下是有关如何使用 s3 curl 脚本下载的示例,
#!/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 -en "$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}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。