Справочник команд 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 во время работы эмулятора нажмите кнопку «Экспорт данных эмулятора» , чтобы экспортировать данные и получить доступ к текущему содержимому базы данных. Расположение экспорта по умолчанию — каталог exportedData в корне каталога вашего проекта.

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

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

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

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

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

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

firebase deploy

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

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

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

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

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

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

–-только dataconnect:serviceId

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

–-only dataconnect:serviceId:connectorId

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

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

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

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

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

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

dataconnect:services:list

firebase dataconnect:services:list

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

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

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

dataconnect:sql:diff

firebase dataconnect:sql:diff

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

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

firebase dataconnect:sql:diff

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

идентификатор_службы

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

dataconnect:sql:migrate

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

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

идентификатор_службы

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

--сила

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

Как и в случае с другими флагами --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 .

В интерактивной среде интерфейс командной строки отображает оценку каждого коннектора и предлагает внести необходимые изменения. Передача флага --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:setup

firebase dataconnect:sql:setup

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

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

Для существующих (внедрённых) баз данных у вас может быть собственный рабочий процесс миграции схем, и вы хотите сохранить права владения схемой. Если вы предпочитаете этот процесс, обязательно отклоните запрос 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.