谷歌云存储对象版本控制是否与appengine云存储客户端库兼容?

时间:2013-07-16 21:57:25

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

我希望将用户生成的数据(用户配置文件,可能会不时更改)从我的AppEngine python应用程序备份到Google云端存储。我可以很容易地周期性地强制备份所有用户生成的数据,但仅更新已更改的数据(如果用户更改了数据,则只将其写入云存储)可能更有意义。稍后,在需要恢复数据的情况下,我想利用云存储服务的对象版本控制功能来确定需要恢复哪些对象。

我正在尝试根据https://developers.google.com/appengine/docs/python/googlecloudstorageclient/functions上找到的有关cloudstorage.open()的信息,准确了解Google云存储如何与AppEngine进行交互。但是,没有迹象表明此服务如何与存储在云中的版本化对象进行交互(版本化对象在此处记录:https://developers.google.com/storage/docs/object-versioning)。

所以,我的问题是:AppEngine上运行的应用程序如何访问存储在Google云端存储中的特定对象版本。

如果有更好的方法,我也会有兴趣听到它。

1 个答案:

答案 0 :(得分:3)

AppEngine GCS客户端库目前不支持版本控制。如果您通过其他渠道在存储桶上启用版本控制,GCS客户端库将继续正常工作,但为了访问或删除旧一代对象,您需要使用XML API或JSON API(而不是特定于引擎的API)。有一个用于JSON API的Python客户端可以在appengine中正常工作,但是通过使用它会丢失一些appengine的细节。有关详细信息,请参阅https://developers.google.com/appengine/docs/python/googlecloudstorageclient/#gcs_rest_api

以下是有关如何使用XML和JSON API进行版本控制的一些信息:https://developers.google.com/storage/docs/generations-preconditions