2017-02-10 3 views
1

Google App Engineには、新しいapp_idと地域に移行するアプリケーションがあります。create_gs_keyで生成されたブロブストアキーを新しいgcsバケットに移行する方法はありますか?

データストアエンティティを正常に転送し、クラウドストレージファイルを新しいバケットに移行しましたが、blob_keysを読むときに問題が発生しました。

私たちのコードの一部はblobstore.create_gs_key機能を使用しますが、新しいクラウドストレージバケットに移動したので、 "blobstore.create_gs_key"で生成されたblob_keysはもう機能しなくなりました。

これらのキーを移行して新しいバケットを使用する方法はありますか? blobstore.create_gs_key()形式で引数としてクラウドストレージのファイル名を取りますので、あなたはすでに観察されたように、古いバケット内のオブジェクトに対して生成さ/gs/bucket/object_name blob_keysは、新しいアプリでは使用できません

おかげで実際 ロブ

答えて

1

、 。

オブジェクトごとに新しいblob_keysを生成する必要があります。古いblob_keys(データストアエンティティプロパティなど)を実際に格納していた場合は、それらを更新する必要があります。

GSバケット内のすべての(関連する)オブジェクトを繰り返し処理する必要があるblob_keyから実際のオブジェクト名を取得することはできないため、それぞれの古いBLOB_KEYと新しいBLOB_KEYを生成し、すべてを検索します古いblob_key値への参照を格納し、新しいblob_key値で置き換えます。

blobstore.create_gs_key()が実際に両方のアプリで同じ GSオブジェクトの同じ blob_keysが生成されますかどうかは私には不明です。両方のアプリに既に関連するコードがあるので、チェックするのは簡単です。そうでなければ、object_name < - >古いblob_keyのマッピングを古いアプリで取得し、新しいアプリに渡す必要があります。この場合、新しいアプリはできないため、新しいblob_keysを新しい対応する値に置き換えます古いblob_keysを生成します。

+0

ありがとう@ダン、意味があります。私はまだそれをテストしていないが正しいと思う。 –

関連する問題