【发布时间】:2020-04-09 16:28:14
【问题描述】:
我正在尝试了解 PUT 方法如何使用预签名的 url 将文件上传到 s3。
我正在使用 boto3 库为 put 调用生成一个预签名的 url。生成的 url 如下所示:
https://My_bucket.s3.amazonaws.com/?AWSAccessKeyId=<ACCESS_KEY>&Signature=<Signature>&x-amz-security-token=<SEC_TOKEN>&Expires=<Expires>
为了生成v4 签名,我需要KeyId 和SecretAccessKey。
如果我们查看上面的 url,我们可以看到 KeyId 与 AWSAccessKeyId 匹配,但没有 SecretAccessKey。
我使用具有管理权限的帐户生成了预签名 URL(它还具有对 s3 存储桶的读/写访问权限)。据我了解,任何非特权用户都可以使用链接中的信息将文件上传到s3。
有很多文档,但坦率地说,我非常困惑。
如果有人能解释一下,我将不胜感激
1.如何使用签名。
2.secret_access_key在哪里?这是从签名派生的吗?
3. 如何使用签名url中的uri查询参数正确生成v4签名?
当我尝试使用我生成的签名时,我得到一个错误
授权标头格式错误;授权组件
“Credential=SIGNATURE/20191217/ap-south-1/s3/aws4_request”格式不正确。
【问题讨论】:
-
你能贴出你的代码吗
-
您的意思是生成预签名网址的代码? boto3.amazonaws.com/v1/documentation/api/latest/guide/…
-
客户端代码在 dart 中。有关此讨论的完整主题可以在 here 找到
标签: amazon-web-services amazon-s3 boto3 put pre-signed-url