Экспорт и импорт данных

Вы можете использовать управляемый сервис экспорта и импорта Cloud Firestore для восстановления данных после случайного удаления и экспорта данных для офлайн-обработки. Вы можете экспортировать все документы или только определённые коллекции. Аналогично, вы можете импортировать все данные из экспорта или только определённые коллекции. Данные, экспортированные из одной базы данных Cloud Firestore можно импортировать в другую базу данных Cloud Firestore . Вы также можете загружать экспорты Cloud Firestore в BigQuery .

На этой странице описывается, как экспортировать и импортировать документы Cloud Firestore с помощью управляемого сервиса экспорта и импорта и Cloud Storage . Управляемый сервис экспорта и импорта Cloud Firestore доступен через командную строку gcloud и API Cloud Firestore ( REST , RPC ).

Прежде чем начать

Прежде чем вы сможете использовать управляемый сервис экспорта и импорта, вы должны выполнить следующие задачи:

  1. Включите биллинг для вашего проекта Google Cloud . Только проекты Google Cloud с включённым биллингом могут использовать функции экспорта и импорта.
  2. Создайте контейнер Cloud Storage для своего проекта рядом с базой данных Cloud Firestore . Вы не можете использовать контейнер Requester Pays для операций экспорта и импорта.
  3. Убедитесь, что у вашей учётной записи есть необходимые разрешения для работы Cloud Firestore и Cloud Storage . Если вы являетесь владельцем проекта, у вашей учётной записи есть необходимые разрешения. В противном случае, следующие роли предоставляют необходимые разрешения для операций экспорта и импорта, а также для доступа к Cloud Storage :

    • Роли Cloud Firestore : Owner , Cloud Datastore Owner или Cloud Datastore Import Export Admin
    • Роли Cloud Storage : Owner или Storage Admin

Разрешения сервисного агента

Операции экспорта и импорта используют агент службы Cloud Firestore для авторизации операций Cloud Storage . Агент службы Cloud Firestore использует следующее соглашение об именовании:

Агент службы Cloud Firestore
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com

Дополнительную информацию об агентах по обслуживанию см. в разделе Агенты по обслуживанию .

Агенту сервиса Cloud Firestore требуется доступ к контейнеру Cloud Storage используемому при экспорте или импорте. Если контейнер Cloud Storage находится в том же проекте, что и база данных Cloud Firestore , агент сервиса Cloud Firestore по умолчанию имеет к нему доступ .

Если контейнер Cloud Storage находится в другом проекте, то необходимо предоставить агенту службы Cloud Firestore доступ к контейнеру Cloud Storage .

Назначьте роли сервисному агенту

Вы можете использовать инструмент командной строки gsutil для назначения одной из перечисленных ниже ролей. Например, чтобы назначить роль администратора хранилища агенту службы Cloud Firestore , выполните следующую команду:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

Замените PROJECT_NUMBER номером вашего проекта, который будет использоваться для имени вашего сервисного агента Cloud Firestore . Чтобы просмотреть имя сервисного агента, см. раздел Просмотр имени сервисного агента .

Альтернативно, вы можете назначить эту роль с помощью консоли Google Cloud .

Просмотреть имя сервисного агента

Вы можете просмотреть учётную запись, используемую вашими операциями импорта и экспорта для авторизации запросов на странице «Импорт/экспорт» в консоли Google Cloud. Вы также можете узнать, использует ли ваша база данных агент сервиса Cloud Firestore или устаревшую учётную запись сервиса App Engine .

  1. Просмотрите учетную запись авторизации рядом с меткой «Задания импорта/экспорта выполняются как» .

Агенту сервиса необходима роль Storage Admin для использования контейнера Cloud Storage для операции экспорта или импорта.

Настройте gcloud для вашего проекта

Вы можете инициировать операции импорта и экспорта через консоль Google Cloud или инструмент командной строки gcloud . Чтобы использовать gcloud , настройте инструмент командной строки и подключитесь к своему проекту одним из следующих способов:

Экспорт данных

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

Экспортировать все документы

Консоль Google Cloud

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В навигационном меню нажмите Импорт/Экспорт .

  4. Нажмите Экспорт .

  5. Нажмите кнопку Экспортировать всю базу данных .

  6. В поле «Выбрать место назначения» введите имя контейнера Cloud Storage или используйте кнопку «Обзор» , чтобы выбрать контейнер.

  7. Нажмите Экспорт .

Консоль возвращается на страницу импорта/экспорта . При успешном запуске операции запись добавляется на страницу последних импортов и экспортов. В случае неудачи отображается сообщение об ошибке.

gcloud

Используйте команду firestore export для экспорта всех документов из базы данных, заменив [BUCKET_NAME] именем вашего контейнера Cloud Storage . Добавьте флаг --async , чтобы инструмент gcloud не ждал завершения операции.

  gcloud firestore export gs://[BUCKET_NAME] \
  --database=[DATABASE]

Заменить следующее:

  • BUCKET_NAME : организуйте экспорт, добавив префикс файла после имени контейнера, например, BUCKET_NAME/my-exports-folder/export-name . Если префикс файла не указан, служба управляемого экспорта создаст его на основе текущей временной метки.

  • DATABASE : имя базы данных, из которой вы хотите экспортировать документы. Для базы данных по умолчанию используйте --database='(default)' .

После запуска операции экспорта закрытие терминала не отменяет операцию, см. отмена операции .

Экспортировать определенные коллекции

Консоль Google Cloud

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В навигационном меню нажмите Импорт/Экспорт .

  4. Нажмите Экспорт .

  5. Нажмите «Экспортировать одну или несколько групп коллекций» . В раскрывающемся меню выберите одну или несколько групп коллекций.

  6. В поле «Выбрать место назначения» введите имя контейнера Cloud Storage или используйте кнопку «Обзор» , чтобы выбрать контейнер.

  7. Нажмите Экспорт .

Консоль возвращается на страницу импорта/экспорта . При успешном запуске операции запись добавляется на страницу последних импортов и экспортов. В случае неудачи отображается сообщение об ошибке.

gcloud

Чтобы экспортировать определённые группы коллекций, используйте флаг --collection-ids . Операция экспортирует только группы коллекций с заданными идентификаторами. Группа коллекций включает все коллекции и подколлекции (по любому пути) с указанным идентификатором коллекции.

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
--database=[DATABASE]

Например, вы можете создать коллекцию restaurants в базе данных foo , включив в неё несколько подколлекций, таких как ratings , reviews или outlets . Для экспорта определённой коллекции restaurants и reviews команда выглядит следующим образом:

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=restaurants,reviews \
--database='cymbal'

Экспорт из временной метки PITR

Вы можете экспортировать базу данных в Cloud Storage из данных PITR . Вы можете экспортировать данные PITR с меткой времени, представляющей собой целую минуту, за последние семь дней, но не ранее самой earliestVersionTime . Если данные по указанной метке времени отсутствуют, операция экспорта завершается ошибкой.

Операция экспорта PITR поддерживает все фильтры, включая экспорт всех документов и экспорт определенных коллекций.

Перед экспортом данных PITR обратите внимание на следующие моменты:

  • Укажите временную метку в формате RFC 3339. Например, 2023-05-26T10:20:00.00Z .
  • Убедитесь, что указанная вами временная метка представляет собой целую минуту в пределах последних семи дней, но не ранее, чем earliestVersionTime . Если данные по указанной временной метке отсутствуют, генерируется ошибка.
  • Плата за неудачный экспорт PITR не взимается.

Консоль

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных
  2. Выберите базу данных из списка баз данных.
  3. В навигационном меню нажмите Импорт/Экспорт .
  4. Нажмите Экспорт .
  5. Настройте источник экспорта для экспорта либо всей базы данных, либо только определенных коллекций.
  6. В разделе Выберите состояние базы данных для экспорта выберите Экспорт из более раннего момента времени .

    Выберите время снимка, которое будет использоваться для экспорта

  7. В разделе «Назначение» введите имя контейнера Cloud Storage или используйте кнопку «Обзор» , чтобы выбрать контейнер.
  8. Нажмите Экспорт .

    Консоль возвращается на страницу импорта/экспорта . При успешном запуске операции запись добавляется на страницу последних импортов и экспортов. В случае неудачи отображается сообщение об ошибке.

gcloud

Вы можете экспортировать свою базу данных в Cloud Storage из данных PITR с помощью команды gcloud firestore export .

Экспортируйте базу данных, указав параметр snapshot-time в качестве временной метки восстановления. Выполните следующую команду, чтобы экспортировать базу данных в ваш контейнер.

gcloud firestore export gs://[BUCKET_NAME_PATH] \
    --snapshot-time=[PITR_TIMESTAMP]

Где PITR_TIMESTAMP — это временная метка PITR с точностью до минуты, например, 2023-05-26T10:20:00.00Z .

Добавьте флаг --collection-ids для экспорта определенных коллекций.

Импорт данных

После экспорта файлов в Cloud Storage вы можете импортировать документы из этих файлов обратно в свой проект или в другой проект. Обратите внимание на следующие моменты, касающиеся операций импорта:

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

  • Импорт не присваивает новые идентификаторы документам. Импорт использует идентификаторы, полученные при экспорте. При импорте документа его идентификатор резервируется для предотвращения конфликтов идентификаторов. Если документ с таким же идентификатором уже существует, импорт перезаписывает существующий документ.

  • Если документ в вашей базе данных не затронут импортом, он останется в вашей базе данных после импорта.

  • Операции импорта не запускают облачные функции. Прослушиватели снимков получают обновления, связанные с операциями импорта.

  • Имя файла .overall_export_metadata должно совпадать с именем его родительской папки:

    gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/ PARENT_FOLDER_NAME / PARENT_FOLDER_NAME .overall_export_metadata

    При перемещении или копировании выходных файлов экспорта сохраните PARENT_FOLDER_NAME и имя файла .overall_export_metadata неизменными.

Импорт всех документов из экспорта

Консоль Google Cloud

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В навигационном меню нажмите Импорт/Экспорт .

  4. Нажмите Импорт .

  5. В поле «Имя файла» введите имя файла .overall_export_metadata , созданного в результате завершённой операции экспорта. Для выбора файла можно использовать кнопку «Обзор» .

  6. Нажмите Импорт .

Консоль возвращается на страницу импорта/экспорта . При успешном запуске операции запись добавляется на страницу последних импортов и экспортов. В случае неудачи отображается сообщение об ошибке.

gcloud

Используйте команду firestore import для импорта документов из предыдущей операции экспорта.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]

Заменить следующее:

  • BUCKET_NAME/EXPORT_PREFIX : расположение ваших экспортных файлов.

  • DATABASE : имя базы данных. Для базы данных по умолчанию используйте --database='(default)' .

Например:

gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'

Вы можете подтвердить местоположение ваших экспортированных файлов в браузере Cloud Storage в консоли Google Cloud:

Открытый браузер Cloud Storage

После запуска операции импорта закрытие терминала не отменяет операцию, см. Отмена операции .

Импорт определенных коллекций

Консоль Google Cloud

Вы не можете выбрать отдельные коллекции в консоли. Вместо этого используйте gcloud .

gcloud

Чтобы импортировать определённые группы коллекций из набора экспортных файлов, используйте флаг --collection-ids . Операция импортирует только группы коллекций с заданными идентификаторами. Группа коллекций включает все коллекции и подколлекции (по любому пути) с указанным идентификатором. Укажите имя базы данных с помощью флага --database . Для базы данных по умолчанию используйте --database='(default)' .

Импорт отдельных групп коллекций поддерживается только при экспорте отдельных групп коллекций. Импорт отдельных коллекций из экспорта всех документов невозможен.

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
  --database=[DATABASE]

Импорт экспорта PITR

Чтобы импортировать экспортированную базу данных, выполните действия, описанные в разделе «Импорт всех документов» . Если в базе данных уже есть какой-либо документ, он будет перезаписан.

Управление экспортно-импортными операциями

После запуска операции экспорта или импорта Cloud Firestore присваивает ей уникальное имя. Имя операции можно использовать для её удаления, отмены или проверки статуса.

Имена операций начинаются с projects/[PROJECT_ID]/databases/(default)/operations/ , например:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Однако вы можете опустить префикс при указании имени операции для команд describe , cancel и delete .

Перечислите все экспортные и импортные операции

Консоль Google Cloud

Список последних операций экспорта и импорта можно просмотреть на странице «Импорт/Экспорт» консоли Google Cloud.

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В навигационном меню нажмите Импорт/Экспорт .

gcloud

Используйте команду operations list , чтобы просмотреть все запущенные и недавно завершенные операции экспорта и импорта:

gcloud firestore operations list

Проверьте статус работы

Консоль Google Cloud

Статус последней операции экспорта или импорта можно просмотреть на странице «Импорт/Экспорт» консоли Google Cloud.

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В навигационном меню нажмите Импорт/Экспорт .

gcloud

Используйте команду operations describe , чтобы отобразить статус операции экспорта или импорта.

gcloud firestore operations describe [OPERATION_NAME]

Оцените время завершения

Запрос статуса длительной операции возвращает метрики workEstimated и workCompleted . Каждая из этих метрик возвращается как в виде количества байтов, так и в виде количества сущностей:

  • workEstimated показывает предполагаемое общее количество байтов и документов, которые обработает операция. Cloud Firestore может не учитывать эту метрику, если не может сделать оценку.

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

Разделите workCompleted на workEstimated для приблизительной оценки прогресса. Эта оценка может быть неточной, поскольку она зависит от задержки сбора статистики.

Отменить операцию

Консоль Google Cloud

Вы можете отменить запущенную операцию экспорта или импорта на странице «Импорт/Экспорт» консоли Google Cloud.

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В навигационном меню нажмите Импорт/Экспорт .

В таблице «Недавние импорты и экспорты» для текущих операций в столбце «Завершено» отображается кнопка «Отмена» . Нажмите кнопку «Отмена» , чтобы остановить операцию. После полной остановки операции кнопка изменится на сообщение «Отмена» , а затем на « Отменено» .

Таблица последних импортов и экспортов в консоли, показывающая текущий импорт данных с опцией «Отмена» для остановки операции.

gcloud

Используйте команду operations cancel , чтобы остановить выполняемую операцию:

gcloud firestore operations cancel [OPERATION_NAME]

Отмена запущенной операции не отменяет её. Отменённая операция экспорта оставит документы, уже экспортированные в Cloud Storage , а отменённая операция импорта сохранит уже внесённые в базу данных обновления. Частично выполненный экспорт импортировать нельзя.

Удалить операцию

Используйте команду gcloud firestore operations delete для удаления операции из списка недавних операций. Эта команда не удаляет файлы экспорта из Cloud Storage .

gcloud firestore operations delete [OPERATION_NAME]

Выставление счетов и ценообразование для экспортно-импортных операций

Перед использованием службы управляемого экспорта и импорта вам необходимо включить выставление счетов для вашего проекта Google Cloud .

Операции экспорта и импорта оплачиваются за чтение и запись документов по тарифам, указанным в ценах Cloud Firestore . Операции экспорта включают одну операцию чтения на каждый экспортируемый документ. Операции импорта включают одну операцию записи на каждый импортируемый документ.

Хранящиеся в Cloud Storage выходные файлы учитываются в расходах на хранение данных Cloud Storage .

Операции экспорта и импорта не будут активировать оповещения о вашем бюджете Google Cloud до их завершения. Операции экспорта и импорта не повлияют на использование, отображаемое в разделе «Использование» консоли.

Просмотр экспортных и импортных расходов

Операции экспорта и импорта применяют метку goog-firestoremanaged:exportimport к оплачиваемым операциям. На странице отчётов Cloud Billing эта метка позволяет просматривать расходы, связанные с операциями импорта и экспорта:

Доступ к метке goog-firestoremanaged осуществляется из меню фильтров.

Экспорт в BigQuery

Вы можете загрузить данные из экспорта Cloud Firestore в BigQuery , но только если вы указали фильтр collection-ids . См. раздел Загрузка данных из экспорта Cloud Firestore .

Ограничение на количество столбцов BigQuery

BigQuery накладывает предел в 10 000 столбцов на таблицу. Экспортные операции Cloud Firestore генерируют схему настольной таблицы BigQuery для каждой группы сбора. В этой схеме каждое уникальное имя поля в группе сбора становится колонкой схемы.

Если схема BigQuery группы коллекций превышает 10 000 столбцов, операция экспорта Cloud Firestore пытается не превышать ограничение на количество столбцов, обрабатывая поля сопоставления как байты. Если в результате преобразования количество столбцов становится меньше 10 000, вы можете загрузить данные в BigQuery , но не сможете выполнять запросы к подполям в полях сопоставления. Если количество столбцов по-прежнему превышает 10 000, операция экспорта не создаст схему BigQuery для группы коллекций, и вы не сможете загрузить её данные в BigQuery .

Формат экспорта и файлы метаданных

Выходные данные управляемого экспорта используют формат журнала LevelDB .

Файлы метаданных

Операция экспорта создаёт файл метаданных для каждой указанной группы коллекций. Файлы метаданных обычно имеют имя ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata .

Файлы метаданных представляют собой буферы протоколов, и их можно декодировать с помощью компилятора протокола protoc . Например, можно декодировать файл метаданных, чтобы определить группы коллекций, содержащиеся в файлах экспорта:

protoc --decode_raw < export0.export_metadata

Миграция сервисного агента

Cloud Firestore использует агента службы Cloud Firestore для авторизации операций импорта и экспорта вместо учётной записи службы App Engine . Агент службы и учётная запись службы используют следующие соглашения об именовании:

Агент службы Cloud Firestore
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com

Ранее Cloud Firestore использовал учётную запись службы App Engine по умолчанию вместо агента службы Cloud Firestore . Если ваша база данных всё ещё использует учётную запись службы App Engine для импорта и экспорта данных, рекомендуем следовать инструкциям в этом разделе, чтобы перейти на использование агента службы Cloud Firestore .

Учетная запись службы App Engine
PROJECT_ID @appspot.gserviceaccount.com

Предпочтительнее использовать агент службы Cloud Firestore , поскольку он предназначен специально для Cloud Firestore . Учётная запись службы App Engine используется несколькими службами.

Просмотреть учетную запись авторизации

Вы можете посмотреть, какую учётную запись используют ваши операции импорта и экспорта для авторизации запросов на странице «Импорт/Экспорт» в консоли Google Cloud. Вы также можете посмотреть, использует ли ваша база данных агент сервиса Cloud Firestore .

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.
  3. В навигационном меню нажмите Импорт/Экспорт .

  4. Просмотрите учетную запись авторизации рядом с меткой «Задания импорта/экспорта выполняются как» .

Если ваш проект не использует агент службы Cloud Firestore , вы можете перейти на агент службы Cloud Firestore используя любой из следующих методов:

Первый из этих методов предпочтительнее, поскольку он ограничивает область действия одним проектом Cloud Firestore . Второй метод менее предпочтителен, поскольку не переносит существующие разрешения контейнеров Cloud Storage . Однако он обеспечивает соответствие требованиям безопасности на уровне организации.

Миграция путем проверки и обновления разрешений контейнера Cloud Storage

Процесс миграции состоит из двух этапов:

  1. Обновите разрешения контейнера Cloud Storage . Подробности см. в следующем разделе.
  2. Подтвердите миграцию в агент службы Cloud Firestore .

Разрешения контейнера сервисного агента

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

Рабочие процессы импорта и экспорта, находящиеся в пределах одного проекта, не требуют изменения прав доступа. Агент сервиса Cloud Firestore по умолчанию может получать доступ к контейнерам в одном проекте.

Обновите разрешения для контейнеров Cloud Storage из других проектов, чтобы предоставить доступ к агенту service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com . Назначьте агенту сервиса роль Firestore Service Agent .

Роль Firestore Service Agent предоставляет разрешения на чтение и запись для контейнера Cloud Storage . Если вам нужно предоставить только разрешения на чтение или только на запись, используйте пользовательскую роль .

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

Перенести проект в Firestore Service Agent

Выполните следующие шаги для миграции из учётной записи службы App Engine в агент службы Cloud Firestore . После завершения миграцию нельзя будет отменить.

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.
  3. В навигационном меню нажмите Импорт/Экспорт .

  4. Если ваш проект ещё не перенесён в сервис-агент Cloud Firestore , вы увидите баннер с описанием процесса миграции и кнопку « Проверить статус контейнера» . Следующий шаг поможет вам выявить и исправить потенциальные ошибки прав доступа.

    Нажмите Проверить статус контейнера .

    Появится меню с опцией завершения миграции и списком контейнеров Cloud Storage . Загрузка списка может занять несколько минут.

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

  5. Запишите основное имя агента службы Cloud Firestore вашего проекта. Имя агента службы отображается под меткой «Агент службы», предоставляя доступ к метке.
  6. Для любого контейнера в списке, который вы будете использовать для будущих операций импорта или экспорта, выполните следующие действия:

    1. В строке таблицы этого контейнера нажмите «Исправить» . Откроется страница разрешений для этого контейнера в новой вкладке.

    2. Нажмите «Добавить» .
    3. В поле Новые субъекты введите имя вашего агента службы Cloud Firestore .
    4. В поле Выберите роль выберите Агенты сервиса > Агент сервиса Firestore .
    5. Нажмите «Сохранить» .
    6. Вернитесь на вкладку со страницей импорта/экспорта Cloud Firestore .
    7. Повторите эти шаги для других разделов в списке. Обязательно просмотрите все страницы списка.
  7. Нажмите кнопку «Миграция в Firestore Service Agent» . Если у вас всё ещё есть контейнеры с непройденными проверками разрешений, подтвердите миграцию, нажав кнопку «Миграция» .

    Вы получите уведомление о завершении миграции. Миграцию нельзя отменить.

Просмотреть статус миграции

Чтобы проверить статус миграции вашего проекта:

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.
  3. В навигационном меню нажмите Импорт/Экспорт .

  4. Найдите имя принципала рядом с меткой «Задания импорта/экспорта выполняются как» .

    Если субъект — service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com , то ваш проект уже перенесён в агент сервиса Cloud Firestore . Миграцию нельзя отменить.

    Если проект не был перенесён, в верхней части страницы появится баннер с кнопкой «Проверить статус контейнера» . Чтобы завершить миграцию, см. раздел «Перенос в агент сервиса Firestore» .

Добавить ограничение политики на уровне всей организации

  • Установите следующее ограничение в политике вашей организации:

    Для импорта/экспорта требуется Firestore Service Agent ( firestore.requireP4SAforImportExport ).

    Это ограничение требует от операций импорта и экспорта для использования сервисного агента Cloud Firestore для авторизации запросов. Чтобы установить это ограничение, см. Создание и управление политиками организации .

Применение этого ограничения организационной политики не предоставляет автоматически соответствующие разрешения контейнера Cloud Storage для агента службы Cloud Firestore .

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