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