2017-02-10 2 views
1

У нас есть приложение в Google Appengine, которое мы переносим в новый app_id и регион.Есть ли способ переноса ключей blobstore, сгенерированных с помощью create_gs_key, в новый ведро gcs?

Мы перенесли объекты хранилища данных успешно и перенесли файлы хранения облаков в новое ведро, но столкнулись с проблемой при чтении blob_keys.

Часть нашего кода использует функциональность blobstore.create_gs_key, однако теперь, когда мы перешли в новое хранилище облачных хранилищ, blob_keys, сгенерированные с помощью «blobstore.create_gs_key», больше не работают.

Есть ли способ перенести эти ключи, чтобы использовать новое ведро?

Благодаря Роб

ответ

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 в обоих приложениях. Вам должно быть легко проверить, так как у вас уже есть связанный код в обоих приложениях. Если это не так, то в старом приложении должно быть получено картирование object_name < -> old blob_key, которое передается новому приложению для замены старых blob_keys на их новые соответствующие значения, поскольку в этом случае новое приложение не сможет для генерации старых blob_keys.

+0

Благодаря @Dan, это имеет смысл. Я еще не тестировал его, но звучал правильно. –

Смежные вопросы