Presigned URL: временные ссылки на загрузку и скачивание S3-объектов

Presigned URL – это временная предподписанная ссылка для конкретной операции с S3-объектом, она содержит параметры, необходимы для выполнения конкретной операции с объектом в течение заданного времени. В PC-Storage можно создать ссылку на загрузку объекта в выбранный бакет или на скачивание уже существующего объекта, не передавая получателю постоянные S3 Access Key и S3 Secret Key. Получателю ссылки не нужно передавать постоянную пару ключей доступа к S3.

Тип ссылкиОперацияЧто задается при создании
Presigned upload URLЗагрузка нового объектаБакет, ключ будущего объекта, тип файла и срок действия ссылки
Presigned download URLСкачивание существующего объектаВыбранный объект и срок действия ссылки

Срок действия: для параметра —expires-in значение по умолчанию 3600 секунд (1 час), но его можно изменить, например, на 86400 секунд (24 часа) и так далее.

1. Presigned upload URL: временная ссылка на загрузку

В веб-интерфейсе PC-Storage ссылка на загрузку создается на уровне выбранного бакета. Заранее определяется ключ, под которым объект будет сохранен, тип файла и срок действия ссылки.

Создать ссылку через веб-интерфейс

  1. Откройте S3-хранилище и выберите бакет, в который должен быть загружен объект.
  2. В правой панели разверните раздел «Presigned upload URL».
  3. В поле ключа укажите имя или путь будущего объекта, например documents/report.pdf.
  4. Укажите тип файла (Content-Type, тип содержимого). Если в имени указан известный формат после точки, интерфейс может подобрать тип автоматически.
  5. Выберите срок действия ссылки.
  6. Скопируйте сформированную ссылку. После выбора срока действия интерфейс также копирует ее в буфер обмена автоматически.
Создание Presigned upload URL
Создание Presigned upload URL в веб-интерфейсе PC-Storage. Значение URL на изображении обезличено.

Ключ объекта: ключ задается до генерации ссылки. Именно под этим ключом загруженный файл будет размещен в бакете.

Пример сценария

Приложению или внешнему пользователю нужно передать один файл в определенный бакет, но выдавать ему постоянные S3-ключи не требуется. В этом случае создайте Presigned upload URL для конкретного ключа и передайте только сформированную временную ссылку.

 

2. Presigned download URL: временная ссылка на скачивание

Ссылка на скачивание формируется для уже существующего объекта. Перед генерацией выберите нужный объект в бакете.

Создать ссылку через веб-интерфейс

  1. Откройте бакет и выберите объект.
  2. В правой панели разверните раздел «Presigned download URL».
  3. Выберите срок действия ссылки.
  4. Скопируйте сформированную ссылку. После выбора срока действия она также автоматически копируется в буфер обмена.
Создание Presigned download URL для выбранного объекта
Создание Presigned download URL для выбранного объекта. Значение URL на изображении обезличено.

Пример сценария

Нужно временно передать файл пользователю или приложению без предоставления доступа к бакету и без передачи постоянных ключей S3. Сформируйте ссылку на нужный объект и задайте срок, достаточный для скачивания.

 

3. Создание Presigned URL через AWS CLI

Далее описывается создание предподписанных ссылок через AWS CLI.

Ссылка на скачивание

aws s3 presign s3://example-bucket/image1.webp \
  --endpoint-url=https://eu-s3.platformcraft.com \
  --expires-in 3600

Команда возвращает URL с подписанными параметрами. В документации значение 3600 секунд используется как стандартный срок жизни ссылки.

https://eu-s3.platformcraft.com/example-bucket/image1.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=...

Ссылка на загрузку

Для загрузки используйте следующий формат вызова:

aws s3 presign s3://example-bucket/path/to/object/image1.png \
  --expires-in 3600

Content-Type: в описании presign-upload указано, что Content-Type задается в сформированной ссылке при загрузке. Значение должно соответствовать типу передаваемого файла.

 

4. Параметры

Ключевые параметры:

  • bucket – имя бакета.
  • key – ключ объекта (идентификатор, под которым объект хранится в S3)
  • . —expires—in – срок жизни ссылки в секундах. В документации: 3600 секунд по умолчанию; 86400 секунд приведены как пример.
  • Content—Type – тип содержимого загружаемого объекта; используется для upload-ссылки.

Примеры Content-Type

  • application/pdf
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document
  • image/jpeg
  • image/png
  • image/webp
  • video/mp4
  • application/zip
  • application/octet-stream (бинарный файл или неизвестный формат)

 

5. Ограничения и рекомендации

  • После истечения выбранного срока необходимо сформировать новую ссылку.
  • Upload-ссылка создается для заранее указанного ключа объекта.
  • Download-ссылка создается для выбранного существующего объекта.
  • Для upload-ссылки учитывайте Content-Type загружаемого файла.
  • Не передавайте постоянные S3 Access Key и S3 Secret Key вместе с Presigned URL: для работы по ссылке они получателю не нужны.
  • Не размещайте действующую Presigned URL в открытом доступе. До истечения срока она предоставляет предусмотренную ссылкой возможность работы с объектом.

 

6. Если ссылка не работает

СитуацияЧто проверить
Ссылка перестала работатьПроверьте срок действия. Если он истек, создайте новую ссылку.
Upload не выполняетсяПроверьте ключ объекта, срок действия и Content-Type.
Download не выполняетсяПроверьте, что выбранный объект по-прежнему существует и срок ссылки не истек.
Ссылка не появилась в буфере обменаСкопируйте ее вручную из поля в интерфейсе.

Подпишитесь на наши новости,
чтобы быть в курсе всех событий

    Прокрутить вверх