Справочник команд Firebase CLI для подключения к данным

Firebase CLI — это инструмент, позволяющий управлять и настраивать продукты и службы Firebase из командной строки.

CLI предоставляет команды, которые можно использовать для выполнения различных задач Data Connect , таких как создание нового проекта Data Connect , инициализация соответствующего локального рабочего каталога, настройка эмулятора Data Connect , вывод списка ресурсов Data Connect , создание клиентских SDK и многое другое.

Команды настройки

Добавьте Data Connect в проект Firebase

инициализация firebase

Используйте firebase init для настройки новой локальной конфигурации проекта. Этот рабочий процесс создает или обновляет файлы конфигурации Firebase в вашем каталоге.

firebase init

Процесс firebase init проведет вас через настройку службы и базы данных, а также, при необходимости, через установку эмулятора Data Connect и настройку сгенерированных SDK.

Настройка сервиса и базы данных

Если вы выберете dataconnect для настройки продукта, CLI предложит вам указать новое имя и местоположение службы, а также указать, следует ли связать существующий экземпляр Cloud SQL для PostgreSQL или создать новый экземпляр.

Если привязан существующий экземпляр, CLI проверяет совместимые настройки, такие как аутентификация IAM и публичные IP-адреса.

Настройка Local Emulator Suite

Поток CLI предлагает настроить эмуляторы, включая эмулятор Data Connect .

Команды эмулятора Data Connect

Запустите эмулятор Data Connect

эмуляторы:start/exec

firebase emulators:start/exec

Используйте версию Local Emulator Suite эмулятора Data Connect в интерактивном режиме с помощью start или в неинтерактивном режиме на основе скрипта с помощью exec .

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

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

Экспорты хранятся в виде снимков вашей локальной базы данных PostgreSQL.

Data Connect предлагает три подхода к экспорту/импорту:

  • Автоматический экспорт/импорт, настроенный в firebase.json , для обеспечения моментальных снимков резервных копий при выключении и запуске эмулятора
  • Ручной экспорт/импорт с использованием CLI
  • Ручной экспорт/импорт с использованием интерфейса расширения VS Code

Автоматический экспорт и импорт настроены в вашем firebase.json

Для резервного копирования данных между сеансами разработки укажите автоматическое местоположение резервной копии во время последовательности firebase init . Это местоположение сохраняется в вашем firebase.json в поле emulators.dataconnect.dataDir . Любые внесенные вами изменения данных будут автоматически сохраняться здесь между запусками эмулятора, поэтому это полезно во время локального тестирования и исследования.

Ручной экспорт: emulators:export и emulators:start/exec --import

Пока эмулятор Data Connect запущен, в отдельном терминале выполните команду firebase emulators:export , чтобы сохранить снимок ваших данных. Затем вы можете запустить эмулятор из этого снимка, используя флаг --import .

# Export data from local emulator from a separate terminal
firebase emulators:export --only dataconnect <export_directory>

# Import data from local directory, here using emulators:exec
firebase emulators:exec ./<your-test-script>.sh --only dataconnect --import <import_directory>

Ручной экспорт/импорт: расширение VS Code

В пользовательском интерфейсе расширения VS Code во время работы эмулятора используйте кнопку Export emulator data для экспорта данных, чтобы экспортировать текущее содержимое базы данных. Местом экспорта по умолчанию является каталог exportedData в корне каталога вашего проекта.

Вы можете импортировать эти данные с помощью CLI, как описано в предыдущем разделе. Вы также можете импортировать эти данные перед запуском эмулятора через VS Code, нажав ссылку Настроить эмулятор и установив Путь импорта .

Команды управления схемами и коннекторами

В этом разделе содержится справочная информация по CLI для команд, которые вы используете для управления схемами и коннекторами.

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

Развертывание схем и соединителей

развертывать

firebase deploy

Эта команда развертывает ресурсы для служб Data Connect, индексированных в firebase.json . При необходимости выполняется миграция схемы и обновление коннектора .

Команда Описание

firebase развертывание

Флаг Описание

–-только подключение к данным

Разверните схемы и коннекторы для всех служб Data Connect для этого проекта, но не развертывайте другие ресурсы продукта Firebase.

–-только dataconnect:serviceId

Развертывание схемы и коннекторов для указанной службы Data Connect.

–-только dataconnect:serviceId:connectorId

Разверните единый коннектор для указанной службы Data Connect.

–-только dataconnect:serviceId:schema

Разверните схему для указанной службы Data Connect.

С помощью флагов –-only вы можете передавать значения, разделенные запятыми, для развертывания любого подмножества ресурсов, которое вам нужно.

firebase deploy --only dataconnect:service1:schema,dataconnect:service2

Список служб, схем и коннекторов Data Connect

dataconnect:услуги:список

firebase dataconnect:services:list

Эта команда выводит основную информацию о службах, схемах и коннекторах, развернутых в проекте.

Сравнение и миграция схем SQL

При запуске firebase deploy CLI выполняет сравнение схем SQL перед развертыванием обновлений. Вы также можете выполнить сравнение и обновление напрямую с помощью набора команд dataconnect:sql .

dataconnect:sql:diff

firebase dataconnect:sql:diff

Эта команда сравнивает локальную схему для сервиса с текущей схемой соответствующей базы данных Cloud SQL. Она выводит команды, которые будут выполнены для переноса базы данных в новую схему.

Команда Описание

firebase dataconnect:sql:diff

Флаг/Параметр Описание

serviceId

Укажите службу. Если пропущено, выведите разницу для всех служб в firebase.json.

dataconnect:sql:миграция

firebase dataconnect:sql:migrate

Эта команда применяет локальные изменения схемы к базе данных Cloud SQL сервиса.

Когда вы настраиваете новый локальный проект Data Connect с файлом dataconnect.yaml по умолчанию, поведение команды dataconnect:sql:migrate заключается в том, чтобы предложить вам любые требуемые изменения, а затем предложить любые необязательные изменения, прежде чем выполнять изменения. Вы можете изменить это поведение, чтобы всегда включать или игнорировать необязательные изменения, обновив конфигурацию dataconnect.yaml , как обсуждалось в разделе миграция схемы в строгом или совместимом режиме

В интерактивных средах CLI отображает каждое SQL-выражение миграции (и является ли оно разрушительным) и запрашивает изменения, которые вы хотите применить. Передача флага --force эквивалентна принятию всех запросов.

В неинтерактивных средах:

  • Без --force вносятся только неразрушающие изменения. Если есть разрушающие изменения, CLI прерывается без внесения изменений.
  • С --force вносятся все изменения. Если это включает в себя какие-либо деструктивные изменения, они выводятся на экран, и вам предлагается продолжить, если только не указан флаг --force .
Команда Описание

firebase dataconnect:sql:migrate

Флаг Описание

serviceId

Перенесите базу данных для указанного сервиса. ServiceId выводится, если в вашем проекте есть только один сервис.

--сила

Автоматически принимать запросы.

Как и в случае с другими флагами --only , вы можете указать несколько служб, разделенных запятыми.

Перенести схему в строгом или совместимом режиме

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

Эти режимы проверки схемы и передовые методы миграции схемы рассматриваются в руководстве по управлению схемой и коннектором.

Режим проверки определяется с помощью ключа schemaValidation в файле dataconnect.yaml . Если schemaValidation не указан, CLI применяет совместимые изменения и запрашивает вас перед выполнением любых строгих изменений. См. справочник по конфигурации .

Управление изменениями в коннекторах

При запуске firebase deploy CLI инициирует обновление соответствующих коннекторов. CLI анализирует изменения в каждом коннекторе и выдает набор сообщений оценки относительно изменений коннектора, которые могут вызвать неожиданное поведение (сообщения уровня предупреждения) или поломки (сообщения уровня поломки) в предыдущих версиях клиентского кода.

Оценка воздействия Сценарий
Уровень предупреждения (совместим с проводами, может измениться поведение)
  • Удаление поля, допускающего значение NULL, из запроса без аннотации @retired .
Уровень поломки (несовместимость проводов, может привести к поломке клиентов)
  • Изменение переменной, допускающей значение NULL, на ненулевую без указания значения по умолчанию.
  • Изменение типа данных поля на JSON-совместимый (например, Int на Float ).
  • Изменение ненулевого столбца на допускающий значение NULL.
  • Удаление переменной, допускающей значение NULL, без аннотации @retired .
  • Удаление ненулевой переменной со значением по умолчанию без аннотации @retired .
Уровень поломки (несовместимость проводов, поломка клиентов)
  • Удаление операции без аннотации @retired .
  • Удаление ненулевого поля из запроса без аннотации @retired .
  • Добавление ненулевой переменной без значения по умолчанию.
  • Изменение типа данных поля на несовместимый (например, String на Int ).
  • Удаление ненулевой переменной без значения по умолчанию и без аннотации @retired .

В интерактивных средах CLI отображает каждую оценку коннектора и запрашивает изменения, которые вы хотите применить. Передача флага --force эквивалентна принятию всех оценок.

В неинтерактивных средах:

  • если происходят только оценки уровня предупреждения (возможные изменения поведения), все коннекторы будут развернуты, а предупреждения будут зарегистрированы в терминале.
  • Если происходят какие-либо оценки уровня прерывания, соединители не будут развернуты, а предупреждения будут записаны в терминал. Вы можете переопределить с помощью флага --force .

Код авторизации аудита

Data Connect помогает вам проводить аудит вашей стратегии авторизации, анализируя код коннектора при развертывании на сервере с помощью firebase deploy из Firebase CLI. Вы можете использовать этот аудит для проверки вашей кодовой базы.

При развертывании коннекторов CLI выведет оценки для существующего, измененного и нового кода операций в вашем коннекторе.

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

Предупреждения и подсказки всегда появляются для:

  • PUBLIC

А предупреждения и запросы появляются на следующих уровнях доступа, если вы не дополняете их фильтрами с использованием auth.uid :

  • USER
  • USER_ANON
  • USER_EMAIL_VERIFIED

Более подробную информацию об авторизации см. в руководстве по авторизации и аттестации .

Команды SDK

Генерация SDK

dataconnect:sdk:generate

firebase dataconnect:sdk:generate

Эта команда генерирует типизированные SDK, объявленные в connector.yaml .

Также ознакомьтесь с руководствами по работе с веб-SDK , Android SDK и iOS SDK .

Команда Описание

firebase dataconnect:sdk:generate

Флаг Описание

--смотреть

Поддерживает работу процесса и генерирует новые SDK всякий раз, когда вы сохраняете изменения в файлах схемы и коннектора GQL.

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

–-только идентификатор_коннектора:платформа

Создавайте SDK только для одной платформы и одного коннектора.

С помощью флагов –only можно передавать значения, разделенные запятыми.

firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin

Команды управления Cloud SQL

Предоставление ролей SQL для Cloud SQL

Data Connect работает поверх вашего собственного экземпляра PostgreSQL, размещенного в Cloud SQL. Команды ролей SQL помогают вам управлять разрешениями для таблиц вашей базы данных.

dataconnect:sql:настройка

firebase dataconnect:sql:setup

Эта команда настраивает начальные глобальные разрешения для таблиц в вашей базе данных.

Поток предоставления и управления базой данных по умолчанию предполагает, что ваш проект использует новую (greenfield) базу данных, и когда вы вызываете firebase deploy , Data Connect отобразит изменения схемы базы данных, которые необходимо внести, и выполнит любые миграции после вашего одобрения. Если это ваш предпочтительный поток, dataconnect:sql:setup предложит вам предоставить разрешения, включая права superuser на владение схемой.

Для существующих (brownfield) баз данных у вас может быть свой собственный рабочий процесс для миграции схем и вы хотите сохранить владение схемой самостоятельно. Если это ваш предпочтительный процесс, обязательно отклоните запрос dataconnect:sql:setup чтобы узнать, должен ли Data Connect обрабатывать миграции SQL для вас. В результате отклонения Data Connect будет иметь только доступ read и write к таблицам вашей базы данных, но владение схемами и миграции останутся вашей ответственностью.

Более подробное обсуждение и примеры использования см. в разделе Управление службами и базами данных .

dataconnect:sql:grant

firebase dataconnect:sql:grant

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

Подробную информацию о предоставленных ролях см. в разделе Роли пользователей PostgreSQL .

Роль SQL-роль Разрешения Использование Предоставляемый
читатель firebasereader_<db_name>_<schema_name> Доступ к базе данных только для чтения.

Может выполнять операции SELECT для всех таблиц в указанной схеме.
Идеально подходит для пользователей или служб, которым требуется извлечение данных, но не изменение. Да
писатель firebasewriter_<db_name>_<schema_name> Доступ для чтения и записи в базу данных.

Может выполнять операции SELECT , INSERT , UPDATE , DELETE и TRUNCATE для всех таблиц в схеме.
Подходит для пользователей или служб, которым необходимо изменять данные в базе данных. Да
владелец firebaseowner_<db_name>_<schema_name> Владелец схемы.

Имеет все привилегии для всех таблиц и последовательностей в схеме.
Эта роль в сочетании с roles/cloudsql.client предоставляет разрешение на выполнение миграции в базе данных.

Например, при вызове firebase dataconnect:sql:migrate .
Да
суперпользователь cloudsqlsuperuser Встроенная роль суперпользователя с полными привилегиями в базе данных.

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

Доступ осуществляется через CLI путем входа в систему как «firebasesuperuser».
Требуется для установки расширений, создания начальной схемы и предоставления любых предоставляемых ролей SQL другим пользователям.

Если пользователю, не являющемуся администратором, требуются привилегии суперпользователя, миграция завершится неудачей и пользователю будет предложено обратиться к администратору базы данных (т. е. пользователю с roles/cloudsql.admin ) для выполнения привилегированных команд SQL.
Предоставляется пользователям с roles/cloudsql.admin и не может быть предоставлено напрямую из Firebase CLI
Команда Описание

firebase dataconnect:sql:grant

Флаг/Параметр Описание

-R, --роль роль

Предоставляемая роль SQL: владелец, писатель или читатель.

-E, --email адрес_электронной_почты

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

Глобальные возможности

Следующие глобальные параметры применяются ко всем командам:

  • --json переключает вывод CLI в JSON для анализа другими инструментами.
  • --noninteractive и --interactive при необходимости переопределяют автоматическое определение сред, отличных от TTY.