如何投放Google云端存储图片?

时间:2014-11-18 05:15:08

标签: python django google-app-engine google-cloud-storage blobstore

我希望google.appengine.ext.blobstoregoogle.appengine.api.images在App Engine之外工作。这些模块是否需要App Engine才能工作?我想在Google云端存储上创建公开但不可猜测的图片网址,并通过Django为其提供服务。

我读到这是通过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应该是我公共图片的公开但不可猜测的网址。如果我运行此代码,则错误为

AssertionError: No api proxy found for service "blobstore"

这表明blobstore需要一个代理,即App Engine,才能发挥其魔力。 App Engine模块可以在App Engine之外工作吗?文档说上面是一种强大的图像提供方式,因为我可以为每个图像生成一个URL,并动态调整图像大小。

此策略是否有效或是否有更好的方式通过Django从Google云端存储中提供图像?

1 个答案:

答案 0 :(得分:4)

blobstore和images API仅在App Engine运行时环境中可用。要在计算引擎中运行它们,您可以:

  • Managed VMs(GCE上的GAE运行时环境)中运行它们

  • 使用GAE API模拟器(例如AppScale

  • 在您自己的基础架构或GCE上运行它们
  • 使用公共API(例如Google云端存储)代替

某些App Engine服务(例如Datastore)现在也公开了可以从GCE中使用的公共API。