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