批量生成预签名URL boto3

时间:2018-12-27 23:00:36

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

我目前正在使用以下内容为存储桶资源创建预签名的网址:

bucket_name = ...
key = ...
s3_client = ...

s3_client.generate_presigned_url(
    ClientMethod="get_object",
    Params={
        "Bucket": bucket_name,
        "Key": key
    },
    ExpiresIn=100
)

这很好。但是,我想知道是否可以在一个请求中为多个键生成预签名的url?还是需要为每个密钥提出一个请求?在该主题的文档中,我没有发现任何有用的信息。我正在寻找这样的东西:

bucket_name = ...
keys = [...]
s3_client = ...

# Returns an array of pre-signed urls, in the same order as `keys`
s3_client.generate_presigned_url(
    ClientMethod="get_object",
    Params={
        "Bucket": bucket_name,
        "Keys": keys
    },
    ExpiresIn=100
)

1 个答案:

答案 0 :(得分:5)

实际上,本地生成预先签名的URL,而无需调用AWS。这是因为所有必需的信息(桶,密钥,秘密密钥)在本地都是已知的,并且可以生成签名。

因此,由于没有网络/服务开销,请随时重复调用该函数。

通常,不需要大量生成URL。相反,只要您的应用程序希望引用资源(例如HTML页面上的图像),它就可以在适当的超时时间内快速调用ColLetter(16384)函数。