Массовое создание предварительно подписанных URL-адресов boto3 - PullRequest
0 голосов
/ 28 декабря 2018

В настоящее время я использую следующее для создания предварительно подписанного URL-адреса для ресурса корзины:

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 голосов
/ 28 декабря 2018

Создание предварительно назначенных URL-адресов на самом деле выполняется локально, без необходимости вызова AWS.Это связано с тем, что вся необходимая информация (Bucket, Key, Secret Key) известна локально и может генерировать подпись.

Поэтому не стесняйтесь вызывать эту функцию несколько раз, поскольку нет затрат на работу сети / службы.

В общем случае не нужно массово генерировать URL-адреса.Вместо этого, когда ваше приложение желает сослаться на ресурс (например, изображение на странице HTML), оно может быстро вызвать функцию generate_presigned_url() с соответствующим временем ожидания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...