使用Blobstore API和Images API直接从GAE中的GCS提供图像

时间:2014-01-10 18:32:01

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

Blobstore和Google云存储(GCS)上的许多问题和答案都有两到三年的历史,而这些年来情况发生了巨大变化。 GCS不再是独立服务。现在是{Apper Engine(GAE)integrated

谷歌似乎如此努力地推动GCS,例如,Blobstore is deprecated

  

此处用于将文件写入Blobstore的Files API功能已经完成   已弃用,并将在将来的某个时间删除   支持将文件写入Google云端存储并使用Blobstore   为他们服务。

我认为现在是切换到GCS的时候了。

例如,www.example.com是基于GAE构建的网站,而example.jpg是存储在GCS上的图片,我想使用网址http://www.example.com/images/example.jpg

来投放图片

以前这是不可能的,但现在可以归功于integration

我发现了这个:

https://developers.google.com/appengine/docs/python/googlecloudstorageclient/ 表示:

  

当Blobstore API与Images API一起使用时,您会得到一个   提供图像的强大方式,因为您可以直接提供图像   来自GCS,绕过App Engine应用程序,节省了实例小时   成本。

我知道如何'绕过App Engine应用。有没有关于如何在使用Blobstore API和Images API提供图像时绕过GAE的示例?

3 个答案:

答案 0 :(得分:3)

说明在这里:https://developers.google.com/appengine/docs/python/images/functions#Image_get_serving_url

从Google云端存储中托管的图片开始。

首先,使用Blobstore API的create_gs_key()函数为GCS图像对象生成blob键。然后,将该blob键传递给Image API的get_serving_url()函数。

Image API会为您提供一个特殊的网址,可以跳过您的应用引擎应用并直接提供图片。

答案 1 :(得分:2)

你现在根本不需要使用BlobStore。以下内容将用于获取用于提供存储在GCS中的图像的图像API URL:

from google.appengine.api import images

images.get_serving_url(None, filename='/gs/<bucket>/<object>'))

答案 2 :(得分:0)

如果您使用www作为GAE Cname,那么从'www'提供图像并不是一个好主意,为了提供图像,您可以创建一个新的子域。在我们的例子中,我们使用cdn.example.com,我们我们的图像就像http://cdn.example.com/images/example.jpg

一样

我们如何做到。

创建一个名为cdn.example.com的GCS存储桶,并将您的图像放在/ images路径下。

指定您的索引和404页面,这样会很好。

更多关于此https://cloud.google.com/storage/docs/website-configuration?hl=en