2016-05-14 4 views
2

Я ищу переход от Blobstore к Google Cloud Storage для таких вещей, как загрузка изображений в проекте (поскольку Google вызывает Blobstore «заменен»).Загрузка файлов непосредственно в Google Cloud Storage для приложения GAE

В Blobstore мультиформатная форма будет отправлена ​​(загружена) непосредственно в Blobstore, которая затем переписала бы запрос и перенаправила приложение GAE для обработки BlobKey (s). Это означало очень небольшую нагрузку на приложение GAE.

Есть ли способ реализовать подобный рабочий процесс с облачным хранилищем Google (GCS)?

В примере, приведенном в Reading and Writing to Google Cloud Storage, используется код GAE, обрабатывающий загрузку, считывание данных и сохранение их в GCS.

Аналогично для подачи (например) загруженного файла изображения: похоже, что обработчик должен быть реализован в коде GAE для чтения из GCS и возврата данных изображения.

Не существует способа просто создать URL-адрес ресурса в GCS (AFAIK AWS S3 поддерживает это) и позволяет ему оттуда обслуживаться?

ответ

2

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

От Using the Blobstore API with Google Cloud Storage (Python):

Вы можете использовать API Blobstore для хранения больших двоичных объектов в облачном хранилище вместо хранить их в Blobstore. Вам нужно установить ведро, как это описано в документации Google Cloud Storage и указать ведро и имя файла в blobstore.blobstore.create_upload_url gs_bucket_name параметра. В обработчике загрузки вам необходимо обработать возвращенные метаданные FileInfo и явно сохранить имя файла облачного хранилища , необходимое для извлечения блоба позже.

Здесь представлено полное примерное приложение.

Обновление: К сожалению, выше ответ относится к окружающей среде Python, то Java один следующим образом:

От Using the Blobstore API with Google Cloud Storage (Java):

Вы можете использовать Blobstore API для хранения больших двоичных объектов в облачном хранилище вместо хранения их в Blobstore. Вам нужно установить ведро, как это описано в документации Google Cloud Storage и указать ведро и имя файла в BlobstoreServicecreateUploadUrl, укажите имя ведро в параметре UploadOptions. В вашем загружаемом обработчике вам необходимо обработать возвращенные метаданные FileInfo, а явно хранить имя хранилища Google Cloud Storage, необходимое для получения блога позже.

Нет полного примера приложения для Java, tho.

+0

Спасибо. Я не нашел эту ссылку. – markvgti

1

Google Cloud Storage поддерживает создание URL-адреса для загрузки или чтения. Для получения дополнительной информации см .: https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

Библиотека gcloud-java-storage может помочь с созданием таких signed URL.

+0

Я читал это, но это существенное изменение от того, как дела обстоят сейчас, и, как и большинство проектов, я действительно настаиваю на времени: -) ... хотя в конечном итоге я могу перейти к использованию [Policy Documents] (https: // cloud.google.com/storage/docs/xml-api/post-object#policydocument): они, кажется, предлагают много. – markvgti