Получить путь к хранилищу из подписанного URL-адреса Google Storage

Рекомендуется получить общедоступную ссылку на файл Google Storage, используя подписанные URL-адреса.

Мне нужно получить ссылку на хранилище на основе URL-адреса, чтобы при удалении записи из базы данных я также мог удалить ее файлы из хранилища.

Подписанный URL для файла, хранящегося в path/file.jpeg Кажется, следует шаблону:

https://storage.googleapis.com/bucket.name/path%2Ffile.jpeg?foobar

Так что в настоящее время я использую регулярное выражение, чтобы взять текст между bucket.name и ? характер, затем замена %2F с /, Я бы хотел знать:

  • Это надежно?
  • Есть ли API в официальных библиотеках, который делает это для меня? Не смог найти ни одного.
  • Есть ли лучший подход? Как хранение пути хранения в записи базы данных вместе с подписанным URL (кажется мне излишним).

1 ответ

Решение

Рекомендуемый способ получения общедоступной ссылки на объект облачного хранилища состоит в том, чтобы просто предоставить к нему общий доступ. При этом вы получите URL-адрес в виде storage.googleapis.com/[your-bucket]/[path- в файл] / [файл].

-Это надежно? Подписанные URL-адреса предназначены для использования, когда требуется доступ (чтение, запись или удаление) только в течение ограниченного времени, поэтому использование Подписанного URL-адреса для текущих нужд приложения может оказаться не лучшим подходом, поскольку вы используете regex для получения подходящего пути URL-адреса. но игнорируя весь текст после "?", что требует подписи определенного вычислительного процесса.

-Есть ли API в официальных библиотеках, который делает это для меня? Не смог найти ни одного. Не уверен, что вы имеете в виду извлечение пути из подписанного URL-адреса, если это так, то ответ - нет.

Есть ли лучший подход? Использование разрешения на публичный доступ может быть еще одним вариантом. Если вы используете подписанный URL-адрес, чтобы также иметь разрешения на удаление, но на самом деле не используете функциональность с ограниченным временем, тогда лучше всего использовать публичный доступ к объектам, создать учетную запись службы с достаточными разрешениями (удалить объекты облачного хранилища) и использовать клиентскую библиотеку хранилища. удалить объект из корзины при удалении записи в БД.

Другие вопросы по тегам