Доступ к объектам учетной записи облачного хранилища Google из ядра приложения - PullRequest
1 голос
/ 25 июня 2019

Обзор

У меня есть хранилище GCP, в котором есть файл .json и 5 файлов jpeg. В файле .json имена изображений соответствуют именам файлов jpeg. Я хочу узнать, каким образом я могу получить доступ к каждому объекту в учетной записи хранения на основе имени изображения.

Метод 1 (Текущий метод):

В настоящее время скрипт Python используется для получения изображений из хранилища. Это можно сделать, просматривая файл с именами изображений в формате .json, получая каждое имя отдельного изображения, затем создавая URL-адрес на основе имени корзины / изображения, извлекая изображение и отображая его на сайте App Engine.

Этот текущий метод требует, чтобы объекты корзины были общедоступными, что ставит проблему безопасности с доступом к этому сегменту через Интернет, во-вторых, это требует больших вычислительных затрат, при этом каждое изображение необходимо извлекать из корзины отдельно. В конечном итоге в корзине будет 10000 изображений, что приведет к медленной загрузке и отображению изображений на веб-странице.

Требование (новый метод): Есть ли способ, с помощью которого я могу вытащить изображения из корзины, а не все изображения одновременно, и отобразить их на веб-странице. Я хочу иметь возможность получать доступ к отдельным изображениям из корзины и отображать их соответствующие данные изображения, полученные из файла .json.

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

Спасибо

1 Ответ

1 голос
/ 25 июня 2019

Было бы полезно увидеть код Python, который выполняет работу прямо сейчас. Вам не нужно, чтобы объекты хранилища были общедоступными. Их можно получить с помощью API Google Cloud Storage (GCS) и токена учетной записи службы, который имеет разрешения только для просмотра в хранилище (хотя в зависимости от того, знаете ли вы имена объектов и нуждаетесь в имени корзины, может потребоваться больше разрешений для учетной записи службы).

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

Ссылки на служебную учетную запись и API-части здесь:

https://cloud.google.com/iam/docs/service-accounts https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-python

Информация о разбиении на страницы для получения объектов GCS здесь:

Как работает пейджинг в функции list_blobs в клиентской библиотеке Python Cloud Cloud Storage

...