【问题标题】:How to serve Google Cloud Storage images?如何提供 Google Cloud Storage 图片?
【发布时间】:2015-01-15 05:07:04
【问题描述】:

我希望 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 的图像?

【问题讨论】:

  • 那行不通。先决条件:“您需要有一个 appengine 项目。对于非 appengine django 项目,这不能作为独立的解决方案,因为没有实现谷歌云存储的身份验证机制。”
  • 我没有 App Engine 项目,也不想要。我在 Google Compute Engine 上有一个独立的 Django 项目。
  • 您可以直接从存储桶中提供您的图像,只需使其世界可读。您必须使用 App Engine 才能使用 App Engine 组件,例如 blobstore、get_serving URL afaik。
  • 你是对的。我现在正在研究适用于 Python 的 Google API 客户端库。

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-08-31
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多