我们在Google Appengine上有一个应用程序,我们正在迁移到新的app_id和区域。
我们已成功传输数据存储区实体并将云存储文件迁移到新存储区,但在读取blob_keys时遇到了问题。
我们的部分代码使用了blobstore.create_gs_key功能,但是,现在我们已经转移到新的云存储桶,通过“blobstore.create_gs_key”生成的blob_keys不再有效。
有没有办法迁移这些密钥才能使用新存储桶?
由于 罗布
答案 0 :(得分: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()
是否会在两个应用中为相同的 GS对象实际生成相同的 blob_keys。您应该很容易检查,因为您已经在两个应用程序中都有相关代码。如果它没有那么object_name
< - >旧的blob_key
映射需要在旧的应用程序中获取并传递给新的应用程序,用新的相应值替换旧的blob_keys,因为在这种情况下,新的应用程序将无法生成旧的blob_keys。 / p>