我们的应用程序已使用Blobstore在App Engine上运行多年 . 我们希望将视频文件移至Google Cloud 端存储 . 将大Blob从Blobstore迁移到GCS的最佳实践是什么?
是否只是使用BlobReader并一次向GCS写入一个字节?或者还有其他快捷方式/工具吗?
至于从App Engine写入GCS,可供选择的库不缺:
-
Blobstore API(可以为GCS对象生成BlobKey,不推荐使用BlobStore Files API,但一次使用有效)
-
Google Cloud Storage API(再次弃用,但一次使用有效)
任何理由使用一个而不是另一个?
1 回答
我没有必要这样做,但我会说没有自动迁移工具 . 所以,是的,你必须自己动手 .
我的方法是使用
cron.yaml
进行批量迁移,跟踪迁移的文件,以便以不同的方式提供它们(根据this page) . 创建对象后, Cloud 存储会为您提供md5哈希,您可以使用该哈希在删除Blobstore副本之前验证每个文件的迁移是否无错误(可以在迁移时传输文件时计算类似的哈希值) ) .至于图书馆:
Google Cloud 端存储客户端库使用可恢复的上传功能"stream"该文件将使内存更顺畅 . 我发现它非常可靠(与已弃用的Google Cloud 端存储API /文件API相反) .
JSON API客户端是较低级别的 .
boto
isn 't optimized for use in GAE, but rather on the desktop, and you don' t想要离开Google Cloud进行迁移($$$) .据我所知,Blobstore允许您从GCS提供文件,并让用户将文件上传到GCS,但不能从应用程序本身写入文件 .