Warm tip: This article is reproduced from serverfault.com, please click

boto3-如何在Django中使用通配符作为键/对象来生成AWS预签名URL

(boto3 - How to use wildcards for key/object to generate aws pre-signed url in django)

发布于 2020-12-02 07:45:05

我的要求是使用一次生成的预签名URL将多个webm文件(使用webrtc捕获)上传到s3。

我试过下面的代码来生成预签名的url,并使用 Postman 上传文件

def create_presigned_url(method_name,s3object,expiration=36000):
    
    try:
        response = s3_client.generate_presigned_post(S3Bucket,
                                                     Key = "",
                                                     Fields=None,
                                                     Conditions = [
                                                                    ["content-length-range",  100, 1000000000],
                                                                    ["starts-with", "$key", "/path-to-file/]
                                                        ],
                                                     ExpiresIn=expiration)
       
    except Exception as e:
        logging.error(e)
        return None
    return response

当我从 Postman 尝试时出现以下错误

在此处输入图片说明

Questioner
Manoj Kumar
Viewed
0
morras 2020-12-03 15:31:46

预签名URL中不支持通配符。

我找不到任何能清楚说明这一点的文档,但是我今天必须做到这一点,而我的发现表明这是不可能的。

我使用键test /创建了一个预签名URL
我只能在S3中检索名为test /的文件的内容
,但不能检索任何其他带有test /前缀的文件的内容。对于其他每个文件,请求均失败,因为“我们计算出的请求签名与你提供的签名不匹配。请检查你的密钥和签名方法。”

此错误专门指出请求与签名不匹配,这与我对不存在的对象进行签名url以及请求失败(因为找不到密钥)不同。