2

Я хочу google.appengine.ext.blobstore и google.appengine.api.images работать вне App Engine. Для работы этих модулей требуется App Engine? Я хочу создавать общедоступные, но не угадываемые URL-адреса моих изображений в Google Cloud Storage и обслуживать их через Django.Как обслуживать изображения Google Cloud Storage?

Я прочитал, что это делается с google.appengine.ext.blobstore.create_gs_key() и google.appengine.api.images.get_serving_url(). Это то, что я до сих пор:

from google.appengine.api import images 
from google.appengine.ext import blobstore 

bucketname = 'mybucket' 

gcs_object_name = '/gs/mybucket/vincent-van-gogh/the-starry-night.jpg' 
blob_key = blobstore.create_gs_key(gcs_object_name) 
image_url = images.get_serving_url(blob_key) 

И IMAGE_URL должен быть публичным, но не угадываемы URL моего образа. Если я запускаю этот код, ошибка

AssertionError: No api proxy found for service "blobstore" 

Это говорит о том Blobstore нужен прокси-сервер, он же App Engine, чтобы работать его волшебство. Могут ли модули App Engine работать вне App Engine? Документы говорят, что вышеупомянутое является мощным способом обслуживания изображений, потому что я могу генерировать URL-адрес для каждого изображения, а также динамически изменять размер изображения.

Будет ли эта стратегия работать или есть лучший способ обслуживать изображения из Google Cloud Storage с помощью Django?

+1

Это не сработает. Предварительные требования: «У вас должен быть проект appengine. Это не будет работать как автономное решение для проектов, не связанных с appengine django, так как не существует механизма аутентификации с облачным хранилищем Google». –

+0

У меня нет проекта App Engine, и я не хочу этого. У меня есть автономный проект Django в Google Compute Engine. –

+1

Вы можете обслуживать свои изображения непосредственно из хранилища, просто сделайте его доступным для чтения. Вы должны использовать App Engine для использования компонентов App Engine, таких как blobstore, get_serving URL afaik. –

ответ

2

API-интерфейс blobstore и изображений доступен только в среде выполнения App Engine. Для того, чтобы запустить их в вычислитель вы можете:

  • Выполнить их в Managed VMs (среду выполнения GAE на GCE)

  • Выполнить их на собственной инфраструктуре или GCE с использованием API-эмулятор GAE (например AppScale)

  • Используйте общественные интерфейсы (такие как Google Cloud Storage) вместо

Некоторые Ap Операции с двигателем (например, Datastore) теперь также предоставляют публичные API-интерфейсы, которые вы можете использовать из GCE.

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