Получение подписанной ссылки (pre-signed URL) на скачивание объекта
Если у вас публичный бакет, объекты доступны всегда, даже если для бакета не настроен хостинг сайта. Ссылку можно получить по этой инструкции либо сформировать самостоятельно. Подробнее про формат ссылки.
Если у вас бакет с ограниченным доступом, то Object Storage позволяет сгенерировать подписанную ссылку на объект. Любой человек, получивший эту ссылку, сможет скачать объект даже из бакета с ограниченным доступом. Подробнее про подписанные ссылки, их генерацию и использование.
Примечание
Если для бакета настроена политика доступа, запрещающая создание подписанных ссылок, создать ссылку не получится.
- В консоли управления
выберите каталог. - Выберите сервис Object Storage.
- Нажмите на имя необходимого бакета.
- Нажмите на имя объекта.
- Нажмите Получить ссылку в правом верхнем углу.
- Для бакета с ограниченным доступом укажите Время жизни ссылки в часах или днях (максимум 30 дней).
- Нажмите Получить ссылку.
- Скопируйте полученную ссылку.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для получения подписанной ссылки на объект:
yc storage s3 presign --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Посмотрите список объектов в бакете, указав его имя:
yc storage s3api list-objects \ --bucket <имя_бакета>
Результат:
contents: - key: sample.txt last_modified: "2025-09-04T06:02:16.884Z" etag: '"7bd56d2f6096d582420e8a01********"' size: "17" owner: id: ajeol2afu1js******** display_name: ajeol2afu1js******** storage_class: STANDARD name: first-bucket max_keys: "1000" key_count: "1" request_id: 338862e1********
-
Сгенерируйте подписанную ссылку. Вы можете сделать это либо с помощью API Yandex Cloud от имени аккаунта, аутентифицированного в текущий момент в профиле Yandex Cloud CLI, либо локально от имени сервисного аккаунта, передав в команде данные его статического ключа доступа.
С помощью API Yandex CloudЛокальноЧтобы сгенерировать подписанную ссылку на скачивание объекта от имени аккаунта, аутентифицированного в текущий момент в профиле Yandex Cloud CLI, выполните команду:
yc storage s3 presign \ s3://<имя_бакета>/<ключ_объекта> \ --expires-in <срок_действия_ссылки> \ --as-attachment
Где:
<имя_бакета>
— имя бакета, в котором содержится нужный объект. Например:first-bucket
.<ключ_объекта>
— ключ объекта в бакете, для которого нужно сгенерировать подписанную ссылку. Например:sample.txt
.--expires-in
— срок действия ссылки в секундах.--as-attachment
— опция, вызывающая принудительное скачивание объекта при переходе по полученной ссылке в браузере. Необязательный параметр. Если опция не задана, при переходе по ссылке вместо скачивания браузер может попытаться отобразить содержимое текстового объекта.
Результат:
https://storage.yandexcloud.kz/first-bucket/sample.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=YCAJEIUp_5V5nBFDgIgh-NLc2%2F20250904%2Fru-central1%2Fs3%2Faws4_request&X-Amz-Date=20250904T063033Z&X-Amz-Expires=36000&X-Amz-Signature=d661b64566753dba1ef66b467e56db0e7f7c69581b0ddd2c8a0a7b505bc3ff61&X-Amz-SignedHeaders=host&response-content-disposition=attachment
Чтобы сгенерировать подписанную ссылку на скачивание объекта локально от имени сервисного аккаунта, выполните команду:
yc storage s3 presign \ s3://<имя_бакета>/<ключ_объекта> \ --expires-in <срок_действия_ссылки> \ --as-attachment \ --local \ --access-key <идентификатор_ключа> \ --secret-key <секретный_ключ>
Где:
<имя_бакета>
— имя бакета, в котором содержится нужный объект. Например:first-bucket
.<ключ_объекта>
— ключ объекта в бакете, для которого нужно сгенерировать подписанную ссылку. Например:sample.txt
.--expires-in
— срок действия ссылки в секундах.--as-attachment
— опция, вызывающая принудительное скачивание объекта при переходе по полученной ссылке в браузере. Необязательный параметр. Если опция не задана, при переходе по ссылке вместо скачивания браузер может попытаться отобразить содержимое текстового объекта.
--access-key
— идентификатор статического ключа доступа сервисного аккаунта.--secret-key
— секретный ключ статического ключа доступа сервисного аккаунта.
Результат:
https://storage.yandexcloud.kz:443/first-bucket/sample.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=YCAJE98uTrKJwAtqwrHJXNh5L%2F20250904%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250904T072650Z&X-Amz-Expires=36000&X-Amz-SignedHeaders=host&response-content-disposition=attachment&x-id=GetObject&X-Amz-Signature=e60562ef242588eec44916ad9e97d2864b250a73f4e5a70e29bb2bd8926249b0
Примечание
Продлить срок действия подписанной ссылки на объект в бакете с ограниченным доступом нельзя. Если срок действия ссылки истек, сформируйте новую ссылку.