通过使用IAM用户凭据通过curl下载Amazon S3文件

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命令不可能吗?

谢谢!

Kan*_*yan 6

以下是有关如何使用 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)

希望能帮助到你。

  • curl:(6)无法解析主机:./curl-s3-with-keysAuth.sh:17:./curl-s3-with-keysAuth.sh:-H:找不到我不断收到此错误:尽管我已验证我的道路是正确的。 (3认同)