如何提供Google Cloud Storage图像服务?

3
我希望 google.appengine.ext.blobstoregoogle.appengine.api.images 能够在 App Engine 之外正常使用。这些模块需要 App Engine 才能正常工作吗?我想在 Django 中创建公开但不可猜测的 Google Cloud Storage 图片 URL,并将其提供服务。
我了解到可以使用 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 Cloud Storage的身份验证机制。” - ian-campbell
我没有App Engine项目,也不想要一个。我在Google Compute Engine上有一个独立的Django项目。 - ian-campbell
1
您可以直接从存储桶中提供图像,只需使其对世界可读即可。据我所知,您必须使用App Engine才能使用App Engine组件,例如blobstore和get_serving URL。 - Paul Collingwood
你说得对。我现在正在研究Google APIs Python客户端库。 - ian-campbell
1个回答

4
Blobstore和Images API仅在App Engine运行环境中可用。要在计算引擎中运行它们,您可以:
  • 托管的VMs(GCE上的GAE运行环境)内运行它们

  • 使用GAE API仿真器(例如AppScale)在自己的基础架构或GCE上运行它们

  • 改用公共API(如Google Cloud Storage)

一些App Engine服务(例如Datastore)现在也提供了公共API,您可以从GCE中使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接