Автоматическое резервное копирование Firestore

Последний год в проектах клиентов использую Firestore от Firebase в качестве облачной базы данных. Очень удобно, когда ты как разработчик мобильных приложений сам себе можешь подготовить необходимую структуру и ее тут же использовать, не нужно никого ждать. За счет этого происходит серьезно ускорение разработки.

Но в Firestore есть серьезное упущение насчет резервных копий для пользователя. Т.е. на случай обрушения хранилища, понятно что в Firebase есть механизмы восстановления, но вот на случай если снес часть баз данных нет механизма откатиться на утреннюю копию, а это иногда так необходимо.

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

Задача я вам скажу оказалось очень не банальной, а всего-то надо в консоли запустить команду gcloud firestore export.

Для этого пришлось изучать контейнеризацию Docker, развернуть в ней среду для запуска консольной команды gcloud, передать туда авторизацию и решить как этот контейнер запустить по требованию.

Для Вас я подготовил готовый образ контейнера и простую инструкцию по запуску автоматических резервных копий по расписанию.

1. Создаем сервисный аккаунт
https://console.cloud.google.com/iam-admin/serviceaccounts/create
Права: Администратор импорта и экспорта Cloud Datastore
Создаем ключ в json

2. Развернем образ контейнера в Cloud Run
gcr.io/realtimeplatform-f957f/backup
Создадим Cloud Run
Настроим передачу параметров auth и project

3. Установим расписание резервных копий
https://console.cloud.google.com/cloudscheduler/start