2014-01-10 64 views
4

Blobstore和Google雲存儲(GCS)的許多問題和解答都有兩三年曆史,而這些年來情況發生了巨大變化。 GCS不再是獨立的服務。現在,它是integrated加入Google App Engine(GAE)。使用Blobstore API和圖像API直接從GA中的GCS提供圖像

谷歌似乎推GCS這麼辛苦,Blobstore is deprecated,例如,

這裏使用的文件寫入Blob存儲文件API功能已 取消,並會在一段時間在將來被移除, 贊成將文件寫入Google Cloud Storage並使用Blobstore 爲他們提供服務。

我認爲現在是切換到GCS的時候了。

例如,www.example.com是建立在GAE網站,而example.jpg是存儲在GCS的形象,我想使用url http://www.example.com/images/example.jpg

過去,這是不可能的服務形象,但現在它可能是由於到integration

我發現這一點:

https://developers.google.com/appengine/docs/python/googlecloudstorageclient/ 說:

當Blob存儲API與圖片API一起使用時,你會得到一個 強大的方式來提供圖片,因爲你可以直接提供圖片來自GCS的 繞過App Engine應用程序,這節省了實例小時 的成本。

我知道如何'繞過App Engine應用'。使用Blobstore API和Images API提供圖像時,有沒有關於如何繞過GAE的例子?

回答

3

說明在這裏:https://developers.google.com/appengine/docs/python/images/functions#Image_get_serving_url

開始在谷歌雲存儲託管的圖片。

首先,使用Blobstore API的create_gs_key()函數爲您的GCS圖像對象生成一個blob鍵。然後,將該blob鍵傳遞給Image API的get_serving_url()函數。

Image API會爲您提供一個特殊的URL,可以跳過您的應用引擎應用並直接提供圖片。

+0

謝謝,但事實證明,它生成的鏈接是一樣的東西http://lh4.ggpht.com/TgjDT-cPRr6bjrpSVQeILk93o4Ouzjo1ygMB6KpmnCHhyH5vJKKRrqxCD2bC3T09CRIP6h5QFsV_l0hnhio5bN7z它不是我想要的。我需要使用像http://www.example.com/images/example.jpg這樣的自定義域名網址來提供圖片。如果Blobstore已被棄用,這在GAE中似乎不可行。 –

+1

如果您的域名是CNAME的Google Cloud Storage存儲分區,例如「images.example.com」,則可以直接從Google Cloud Storage以images.example.com/example.jpg的形式投放它們。 但是,您不能將「www.example.com」用於應用引擎以及谷歌雲存儲。 –

+0

好極了,但是有沒有什麼辦法通過跳過應用程序引擎並直接從GCS服務的方式來提供視頻或音頻等圖像以外的內容? –

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

0

你其實並不需要用到現在BLOBSTORE在所有。下面的工作來獲取圖像API網址爲服務存儲在GCS圖片:

from google.appengine.api import images 

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