2017-02-10 35 views
1

我们在Google Appengine上有一个应用程序,我们正在迁移到一个新的app_id和区域。有没有办法将通过create_gs_key生成的blobstore密钥迁移到新的gcs存储桶?

我们已成功传输数据存储实体并将云存储文件迁移到新存储区,但在读取blob_keys时遇到问题。

但是,我们的部分代码使用blobstore.create_gs_key功能,但现在我们已移至新的云存储存储桶,通过“blobstore.create_gs_key”生成的blob_keys不再有效。

有没有办法迁移这些密钥来使用新的存储桶?

感谢 罗布

回答

1

事实上,自blobstore.create_gs_key()把参数作为云存储的文件名格式/gs/bucket/object_name旧桶的物体所产生的blob_keys将不会在新的应用程序使用,因为你已经观察。

您必须为每个对象生成新的blob_keys。如果实际存储了旧的blob_keys(例如作为数据存储实体属性),则必须更新它们。

由于显然你不能从blob_key获得实际的对象名,你需要遍历GS桶中的所有(相关)对象,为每个对象生成旧的和新的blob_keys,搜索所有存储对旧的blob_key值的引用,并用新的blob_key值替换它们。

这我不清楚,如果blobstore.create_gs_key()实际上会产生相同 blob_keys在这两个应用的相同 GS对象。你应该很容易检查,因为你已经在两个应用程序中都有相关的代码。如果不是,则需要在旧应用程序中获取映射,并将其传递到新应用程序,以用它们的新对应值替换旧的blob_keys,因为在这种情况下,新应用程序将不能生成旧的blob_keys。

+0

谢谢@丹,这是有道理的。我还没有测试过,但听起来正确。 –

相关问题