我目前正在使用以下内容为存储桶资源创建预签名的网址:
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
)
答案 0 :(得分:5)
实际上,本地生成预先签名的URL,而无需调用AWS。这是因为所有必需的信息(桶,密钥,秘密密钥)在本地都是已知的,并且可以生成签名。
因此,由于没有网络/服务开销,请随时重复调用该函数。
通常,不需要大量生成URL。相反,只要您的应用程序希望引用资源(例如HTML页面上的图像),它就可以在适当的超时时间内快速调用ColLetter(16384)
函数。