0

Я собираюсь попытаться сохранить это как можно короче.Как разрешить пользователю загружать файл облачного хранилища Google из Compute Engine без открытого доступа

У меня есть экземпляр вычислительного двигателя, и он запускает Python/Flask.

То, что я пытаюсь сделать, позволяет пользователю загружать файл из облачного хранилища Google, однако я не хочу, чтобы файл был общедоступным. Есть ли способ, которым мой экземпляр Compute может передать файл из облачного хранилища для загрузки пользователем, а затем удалить файл из экземпляра вычисления после того, как пользователь закончил загрузку файла? Я хочу, чтобы загрузка началась сразу после нажатия кнопки загрузки.

Я использую учетные данные приложения по умолчанию. Подпроцесс не является вариантом.

SideNote: Другой способ, который я думал об этом, заключался в том, чтобы каждый пользователь, который зарегистрировался на веб-сайте, имел доступ к определенной папке на ведре. Однако я не уверен, что это будет возможно даже без входа в учетную запись google. Это также похоже на то, что было бы больно реализовать.

ответ

1

@ ответ jterrace - это то, что вы хотите.

Подписанные URL-адреса могут иметь связанный с ними срок. В вашем приложении вы создадите подписанный url для файла и выполните перенаправление HTTP к указанному файлу.

https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

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

Вы можете делать всевозможные потрясающие вещи таким образом, в том числе разрешать пользователям загружать ПОСТОЯННО в облачное хранилище Google! :)

0

Учетная запись службы, связанная с вашим вычислительным двигателем, решит проблему.

Service accounts AUTHENTICATE приложение, работающее на ваши экземпляров виртуальных машин с другими сервисами Google Cloud Platform. Например, для , если вы пишете приложение, которое читает и записывает файлы на Google Cloud Storage, оно должно сначала пройти аутентификацию в Google Cloud Storage API. Вы можете создать учетную запись службы и предоставить услуге доступ к учетной записи для API облачного хранения.

По историческим причинам все проекты приходят с учетной записью службы Compute Engine по умолчанию, идентифицируемых с помощью этой электронной почты:

[PROJECT_NUMBER][email protected] 

По умолчанию учетная запись службы в вычислитель имеет доступ только для чтения к Google Cloud хранение обслуживание. Таким образом, вычислительный движок может получить доступ к вашему хранилищу с помощью клиентских библиотек GCP.

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

Начните с ввода gsutil ls из вашего вычислительного механизма, в котором перечислены все ведра в вашем облачном хранилище.

+0

Спасибо, что ответили. Я понимаю это. Я уже имел доступ через учетные данные по умолчанию, как я уже упоминал. То, что я пытаюсь сделать, позволяет пользователю загружаться из ведра, не делая файлы общедоступными. Поэтому я предполагаю, что то, что я ищу, является примером, когда вычислительный движок загружает файл и передает этот файл пользователю после нажатия кнопки загрузки. После завершения загрузки в конце пользователя вычислительный движок удаляет загруженный файл, но он должен оставаться в облачном хранилище. – DarkMatter

+0

Вопрос не краток. Это больше похоже на мини-проект. Попробуйте быстрое прототипирование, и если вы где-нибудь сломаетесь, опубликуйте исходный код, где у вас возникнут проблемы, и разработчики в переполнении стека смогут вам помочь. Добавьте вам пример на ваш вопрос –

Смежные вопросы