解释了AWS前置URL查询字符串

问题描述 投票:0回答:1

我试图了解PUT方法如何使用预签名的url将文件加载到s3。

我正在使用boto3库为发出呼叫生成一个预签名的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。

我已使用具有管理特权的帐户(也具有对s3存储桶的读/写访问权限)生成了预签名的url。据我了解,任何非特权用户都可以使用链接中的信息将文件上传到s3。

有很多文档,但是坦率地说,我非常困惑。

如果有人可以解释,我将不胜感激1.如何使用签名。2. secret_access_key在哪里?这是来自签名吗?3.如何使用已签名网址中的uri查询参数正确生成v4签名?

[当我尝试使用生成的签名时,出现错误

The authorization header is malformed; the authorization component "Credential=SIGNATURE/20191217/ap-south-1/s3/aws4_request" is malformed.
amazon-web-services amazon-s3 put pre-signed-url
1个回答
0
投票

基本带有前缀的url可以临时访问特定的s3对象。您可以上传对象或获取对象。

为了生成一个预签名的URL,您需要具有权限。使用有效凭据生成预签名URL后,任何人都可以上载或下载该对象。那就是对象的全部目的。

© www.soinside.com 2019 - 2024. All rights reserved.