是否可以使用boto3一次获得多个签名

时间:2017-08-25 17:17:50

标签: python amazon-web-services amazon-s3 boto3

我尝试使用python中的boto3生成用于访问存储在AWS S3中的照片的签名。以下是我使用的代码:

# pass in the credentials and generate an s3 session
s3_session = boto3.Session(
        aws_access_key_id=aws_access_key,
        aws_secret_access_key=aws_secret_key)

# now create an s3 client
c = s3_session.client('s3')

signature = c.generate_presigned_url('get_object',
                ExpiresIn=expiry_time,
                Params={'Bucket': bucket,
                        'Key': path
                })

我试图同时为许多文件执行此操作。是否可以一次传递多个键(或者更广泛地说,一次获得多个签名)而不是为每个键循环使用它?我尝试为path传递一个列表,但我得到了ParamValidationError

1 个答案:

答案 0 :(得分:0)

generate_presigned_url()函数一次只生成一个签名。

请注意不涉及回拨AWS - 签名是根据提供的信息在本地计算的。因此,只需在循环中调用它,您就可以非常快速地生成结果。

但是,您希望同时生成许多签名是非常奇怪的。正常用法是在用户请求对象时生成预签名URL。这样,URL可以是时间限制的(例如5分钟)。 5分钟后,URL将不再起作用。

许多人似乎想要生成预先签名的URL并将其保存在数据库中,但这是一种反模式,因为URL没有与当前用户相关的到期时间。

底线:根据需要生成预先签名的网址,一次一个。