Можно ли возобновить загрузку с помощью подписанного URL-адреса Google Cloud Storage?

Используя Google Cloud Storage, я хотел бы передать клиенту необходимую информацию для возобновляемой загрузки. Возможно ли это?

Ответ 1

Да, это возможно.

С сервером, прошедшим проверку подлинности в службе облачного хранилища и клиентом, которому он хочет предоставить доступ, типичный рабочий процесс загрузки подписанного URL-адреса выглядит следующим образом:

  • Клиент запрашивает подпись, чтобы он мог выполнить PUT
  • Ваш сервер создает и возвращает подписанный URL с помощью описанного здесь метода
  • Клиент выполняет PUT с возвращенным URL

Повторяющийся рабочий процесс выглядит следующим образом:

  • Клиент запрашивает подпись, чтобы он мог выполнить PUT
  • Ваш сервер создает и возвращает подписанный URL с помощью описанного здесь метода
  • Ваш сервер делает запрос POST для инициирования возобновляемой загрузки как описанной здесь
  • Сервер возвращает как URL, так и Upload ID клиенту
  • Клиент выполняет одно или несколько PUT, используя предоставленные URL и Upload ID

Ответ 2

Я только что нашел эту заметку в docs здесь:

Примечание. Если ваши пользователи загружают только ресурсы (запись) в управляемый доступом ведро, вы можете использовать функциональные возможности возобновляемых загрузок Google Cloud Storage и избегать подписи URL-адресов или необходимости использования учетной записи Google. В возобновляемом сценарии загрузки ваш (серверный) код проверяет подлинность и инициирует загрузку в Google Cloud Storage без фактической загрузки каких-либо данных. Запрос инициализации возвращает идентификатор загрузки, который затем может быть использован в запросе клиента для загрузки данных. Клиентский запрос не нужно подписывать, потому что идентификатор загрузки, по сути, действует как токен аутентификации. Если вы выберете этот путь, обязательно передайте идентификатор загрузки по HTTPS.

Так что в принципе вам не нужен подписанный URL-адрес. Идентификатора загрузки будет достаточно. Процедура будет следующей:

  • Клиент запрашивает загрузку, поэтому может выполнять PUT
  • Ваш сервер делает запрос POST для инициирования возобновляемой загрузки.
  • Сервер возвращает идентификатор загрузки клиенту.
  • Клиент выполняет PUT для загрузки файла с использованием предоставленного идентификатора загрузки.