nouhau
nouhau copied to clipboard
Cloud Datastore Import/Export Example
Exportした内容を別のGCP ProjectにImportしようとすると、地味にハマる
IAM
https://cloud.google.com/datastore/docs/export-import-entities?hl=en#permissions
だいたいドキュメントに書いてあるとおりだが、Importを実行しているのは {projectid}@appspot.gserviceaccount.com
のようなので、こいつをRoleを割り当ててやる必要がある。
Kind指定
うまいやり方があるのかもしれないが、 sinmetalが試した限りでは、全Kind Importするか、指定した1つのkindしかImportすることができなかった。 また、kindを指定する場合、Exportする側も1つのkindだけ指定してExportしておく必要があった。
以下はHoge Kindのみを持っていきたい時の gcloud datastore
のサンプル。
Export時に overall_export_metadata
を末尾に持つファイルが複数できあがるが、指定するのは最もrootにいる overall_export_metadata
を指定する。
Export
gcloud datastore export --async --kinds='Hoge' gs://datastore-backup/hoge
Import
gcloud datastore import --kinds='Hoge' gs://datastore-backup/hoge/hoge.overall_export_metadata
私が試したところExport時に --kinds
を複数指定しておけばImport時に個別指定ができました。Kind未指定でExportした場合は一括復元しかできません。
Export
gcloud datastore export gs://datastore-backup/hoge --kinds='hoge,fuga,piyo,gero' --async
Import
Kind未指定・全指定でバックアップ内容を全て復元
gcloud datastore import gs://datastore-backup/hoge/hoge.overall_export_metadata --async
gcloud datastore import gs://datastore-backup/hoge/hoge.overall_export_metadata --kinds='hoge,fuga,piyo,gero' --async
Export時に指定したKindの一部だけの復元も可
gcloud datastore import gs://datastore-backup/hoge/hoge.overall_export_metadata --kinds='hoge' --async