如何在django中为key/object使用通配符来生成aws预签名url

jhdbpxl9  于 2022-12-14  发布在  Go
关注(0)|答案(1)|浏览(102)

我的要求是上传多个webm文件(这是使用webrtc捕获)到s3使用一次生成的预先签署的网址。
我试过下面的代码生成预签名的网址和使用 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 得到下面的错误

sgtfey8w

sgtfey8w1#

预签名的URL中不支持通配符。
我一直无法找到任何文件,明确说明这一点,但我必须实现同样的今天,我的调查结果表明,这是不可能的。
我用键test/* 创建了一个预签名的URL。
我只能检索S3中名为test/* 的文件的内容,而不能检索任何其他前缀为test/的文件。对于其他每个文件,请求都失败了,因为“我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。"。
此错误明确指出请求与签名不匹配,这与我为不存在的对象创建签名url时不同,因为无法找到密钥,请求失败。

相关问题