Firestore и Storage Bucket Экспорт / Импорт между проектами - PullRequest
0 голосов
/ 14 января 2019

Таким образом, в текущих бета-функциях CLI Google Cloud есть опция для импорта и экспорта данных Firestore. https://firebase.google.com/docs/firestore/manage-data/export-import

Теперь я сделал экспорт в ведро, все работало нормально и снова импортировал, тоже работал. Теперь у меня есть 2 разных проекта, и я хочу импортировать резервную копию в другой проект, это возможно? Было бы хорошо, если бы мне нужен биллинг-аккаунт только для одного проекта.

Эта строка в Документах говорит, что это возможно

После экспорта файлов в облачное хранилище вы можете импортировать документы в этих файлах обратно в ваш проект или в другой проект.

Но Документы не охватывают, как именно это сделано?

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Принятый ответ не сработал для меня. Независимо от того, какие разрешения были предоставлены в исходной корзине, импорт всегда завершался неудачей с PERMISSION DENIED: The caller does not have permission

Решение было создать другую учетную запись службы. Я создал служебную учетную запись в целевом проекте с ролями Cloud Datastore Import Export Admin и Storage Admin. Затем я добавил эту учетную запись службы в исходный проект IAM с теми же ролями. После этого у меня сработал следующий процесс:

gcloud auth activate-service-account --key-file=./mynewserviceaccount.json
gcloud beta firestore export gs://mysourceprojectbucket --project mysourceprojectid
gcloud beta firestore import gs://mysourceprojectbucket/WHATEVER_NAME_FROM_EXPORT --project mydestinationproject
0 голосов
/ 14 января 2019

Возможен импорт / экспорт между проектами. Вот шаги, которые сработали для меня:

Сначала убедитесь, что установлен инструмент командной строки gcloud. Инструкция по настройке, и полную информацию о процессе экспорта / импорта можно прочитать в документации Firebase страница о Firestore Экспорт и импорт .

Прежде чем продолжить, настройте проект gcloud на проект, из которого вы хотите источник ваших данных:

gcloud config set project [PROJECT_ID]

Затем, используя веб-приложение Google Cloud Console , убедитесь, что на 1018 * Cloud Storage была создана корзина проект, который будет источником данных.

Например, для исходного сегмента вы можете создать сегмент, например:

gs://my-source-project-export.

Вы можете называть ведро как угодно, если вы выбираете что-то уникальное.

Экспорт исходных данных может быть завершен с помощью команды. Например, если вы хотите экспортировать только коллекции cameras и radios в ваше ведро my-source-project-export с каталог с датой для идентификации экспорта, вы включаете необязательный флаг collection-ids, как показано ниже:

gcloud beta firestore export gs://my-source-project-export/export-20190113_2109 --collection-ids='cameras','radios'

Пропуск флага скопирует ВСЕ коллекции.

Инструмент CLI gcloud должен завершить экспорт без проблем.

Теперь, чтобы завершить импорт , мы сначала переключаем проект gcloud на target для наших данных:

gcloud config set project [PROJECT_ID]

Затем мы можем попытаться импортировать:

gcloud beta firestore import --collection-ids='cameras','radios' gs://my-source-project-export/export-20190113_2109

Операция может завершиться ошибкой из-за проблем с разрешениями. Если это так, он сообщит, какая учетная запись службы должна иметь доступ к ведру. Чтобы решить проблемы с разрешениями, вы можете просто использовать Браузер хранилища Google Cloud Console для администрирования разрешения для source bucket. Требуемая учетная запись должна быть добавлена ​​в список members с роль Storage Admin.

Как только разрешения исправлены, операция может быть повторена. Для длительных операций список операций и их статусы можно получить с помощью следующей команды:

gcloud beta firestore operations list

После завершения импорта может быть целесообразно отменить разрешения, предоставленные учетной записи службы, если таковые имеются, чтобы избежать любых нежелательных проблем безопасности.

Надеюсь, это поможет.

...