¿Cómo servir imágenes de Google Cloud Storage?

Quiero que google.appengine.ext.blobstore y google.appengine.api.images funcionen fuera de App Engine. ¿Estos módulos requieren App Engine para funcionar? Quiero crear URL públicas pero no adivinables de mis imágenes en Google Cloud Storage y servirlas a través de Django.

Leí que esto se hace con google.appengine.ext.blobstore.create_gs_key() y google.appengine.api.images.get_serving_url() . Esto es lo que tengo hasta ahora:

 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) 

Y se supone que image_url es una URL pública pero no presumible de mi imagen. Si ejecuto este código, el error es

 AssertionError: No api proxy found for service "blobstore" 

Esto sugiere que blobstore necesita un proxy, también conocido como App Engine, para poder realizar su magia. ¿Pueden funcionar los módulos de App Engine fuera de App Engine? Los documentos dicen que lo anterior es una forma poderosa de servir imágenes porque puedo generar una URL para cada imagen y también cambiar el tamaño de la imagen dinámicamente.

¿Funcionará esta estrategia o hay una mejor manera de servir imágenes de Google Cloud Storage con Django?

Las API de blobstore e imágenes están disponibles solo en el entorno de ejecución de App Engine. Para ejecutarlos dentro de compute engine puedes:

  • Ejecútelos dentro de las máquinas virtuales administradas (el entorno de tiempo de ejecución de GAE en GCE)

  • Ejecútelos en su propia infraestructura o GCE utilizando un emulador de API de GAE (como AppScale )

  • Utilice API públicas (como Google Cloud Storage) en su lugar

Algunos servicios de App Engine (como Datastore ) ahora también exponen las API públicas que puede usar desde GCE.