Мы используем App Engine, Datastore и Java, и мы безуспешно пытаемся скопировать наш производственный Google Datastore в локальную копию.
(Полный сценарий миграции, который я использую, подробно описан в отдельном Github вопрос )
Мы используем следующее для экспорта
gcloud datastore export --namespaces="(default)" gs://$GOOGLE_CLOUD_BUCKET
А затем импортируем, что выглядит примерно так
'http://' + $LOCAL_DATASTORE_HOSTNAME + ':' + $LOCAL_DATASTORE_PORT + '/v1/projects/' + $PROJECT_ID + ':import'
При запуске сценария создается «local_db.bin», который выглядит правильным, однако затем мы копируем его в требуемое место и запускаем его, мы сталкиваемся со следующей ошибкой.
com.google.appengine.api.datastore.чтобы загрузить из резервного хранилища, \ WEB-INF \ appengine-генерируется \ local_db.bin java.lang.ClassNotFoundException: com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub $ FileProfile в java.net.URLClassLoader.findClass (URLClassLoader.java:382) в java.lang.ClassLoader.loadClass (ClassLoader.java:424)
Если мы затем сохраняем новую запись, она уноситсяlocal_db.bin и создает новый.
Кто-нибудь знает, где в процессе может быть эта проблема?
ОБНОВЛЕНИЕ:
Я следовал точному процессу, который @Крис Хэлкроу описывает в своем ответе повторный импорт данных.Данные теперь успешно импортируются непосредственно в local_db.bin, который должен видеть App Engine, однако я все еще вижу ошибку.
Мы подозреваем, что может быть проблема с разрешениями.Мы попытались изменить некоторые разрешения IAM для учетной записи, под которой работает AppEngine.В частности, мы попытались добавить роль IAM редактора проектов в учетную запись, которую мы используем для нашего gcloud login
, как описано в , активировать разрешения хранилища данных для App Engine .
We 'Мы также рассмотрели следующее: какие детали требуют разрешений при использовании скрипта Powershell для экспорта / импорта, подробно описанного в нашем вопросе GitHub.
https://cloud.google.com/datastore/docs/export-import-entities#permissions
Мы считаем, что наши текущие роли должны позволятьнеобходимые разрешения, которые это описывает.