有没有办法将通过create_gs_key生成的blobstore密钥迁移到新的gcs存储桶?

时间:2017-02-10 11:11:54

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

我们在Google Appengine上有一个应用程序,我们正在迁移到新的app_id和区域。

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

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

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

由于 罗布

1 个答案:

答案 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>