小编典典

如何提供Google Cloud Storage图片?

python

我想google.appengine.ext.blobstoregoogle.appengine.api.images到App
Engine的工作之外。这些模块是否需要App Engine才能正常运行?我想在Google Cloud
Storage上为图像创建公共的但不可猜测的URL,并通过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应该是我的图像的公共但不可猜测的URL。如果我运行此代码,则错误为

AssertionError: No api proxy found for service "blobstore"

这表明blobstore需要代理(也称为App Engine)才能发挥其魔力。App Engine模块可以在App
Engine之外运行吗?文档说,以上是提供图像的有效方法,因为我可以为每个图像生成一个URL,还可以动态调整图像的大小。

这个策略行得通吗?还是有更好的方法通过Django从Google Cloud Storage提供图像?


阅读 281

收藏
2021-01-20

共1个答案

小编典典

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

  • 受管VM中运行它们(GCE上的GAE运行时环境)

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

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

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

2021-01-20