Firebase CLI — это инструмент, позволяющий управлять продуктами и сервисами Firebase и настраивать их из командной строки.
Интерфейс командной строки предоставляет команды, которые можно использовать для выполнения различных задач Data Connect , таких как создание нового проекта Data Connect , инициализация соответствующего локального рабочего каталога, настройка эмулятора Data Connect , перечисление ресурсов Data Connect , генерация клиентских SDK и многое другое.
Команды настройки
Добавить Data Connect в проект Firebase
firebase init
Используйте firebase init для настройки новой локальной конфигурации проекта. Этот рабочий процесс создает или обновляет файлы конфигурации Firebase в вашем каталоге.
firebase init Процесс firebase init проведет вас через настройку сервиса и базы данных, а также, при необходимости, установит эмулятор Data Connect и настроит сгенерированные SDK.
Настройка сервиса и базы данных
Если вы выберете dataconnect для настройки продукта, интерфейс командной строки запросит у вас новое имя и местоположение службы, а также укажет, следует ли связать существующий экземпляр Cloud SQL for PostgreSQL или создать новый экземпляр.
Если уже подключен существующий экземпляр, интерфейс командной строки проверяет совместимость настроек, таких как аутентификация IAM и публичные IP-адреса.
Настройка Local Emulator Suite
Интерфейс командной строки предлагает настроить эмуляторы, в том числе эмулятор Data Connect .
Команды эмулятора Data Connect
Запустите эмулятор Data Connect
эмуляторы: запуск/исполнение
firebase emulators:start/exec Используйте версию эмулятора Data Connect из Local Emulator Suite в интерактивном режиме с помощью start или в неинтерактивном режиме с использованием скрипта с помощью exec .
Экспорт и импорт локальных данных PostgreSQL
Для поддержки локального прототипирования и тестирования, а также непрерывной интеграции, вы можете экспортировать данные, хранящиеся в локальном экземпляре базы данных, и импортировать их между итерациями разработки и тестовыми запусками.
Экспортированные данные сохраняются в виде снимков вашей локальной базы данных PostgreSQL.
Data Connect предлагает три способа экспорта/импорта:
- В файле
firebase.jsonнастроен автоматический экспорт/импорт для создания резервных копий в режиме реального времени при выключении и запуске эмулятора. - Экспорт/импорт вручную с использованием интерфейса командной строки.
- Ручной экспорт/импорт с использованием интерфейса расширения 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, щелкнув ссылку «Настроить эмулятор» и указав путь импорта .
Команды управления схемой и коннектором
В этом разделе представлена справочная информация по командам командной строки, используемым для управления схемами и коннекторами.
Инструкции по использованию и рекомендуемые методы работы с этими командами см. в руководстве по управлению схемами и коннекторами .
Разверните схемы и коннекторы.
развертывать
firebase deployЭта команда развертывает ресурсы для служб Data Connect, проиндексированных в файле firebase.json . При необходимости выполняется миграция схемы и обновление коннектора .
| Командование | Описание | |
|---|---|---|
firebase deploy | Флаг | Описание |
–-только подключение данных | Разверните схемы и коннекторы для всех сервисов Data Connect для этого проекта, но не развертывайте ресурсы других продуктов Firebase. | |
–-only dataconnect:serviceId | Разверните схему и коннекторы для указанной службы Data Connect. | |
–-only dataconnect:serviceId:connectorId | Разверните единый коннектор для указанной службы Data Connect. | |
–-only 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 | Флаг/Параметр | Описание |
serviceId | Укажите сервис. Если не указано, выведите разницу для всех сервисов в файле 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 | Флаг | Описание |
serviceId | Перенесите базу данных для указанного сервиса. Идентификатор сервиса определяется автоматически, если в вашем проекте только один сервис. | |
--сила | Автоматически принимать запросы. | |
Как и в случае с другими флагами --only , вы можете указать несколько услуг, разделенных запятыми.
Миграция схемы в строгом или совместимом режиме.
В миграции схем Data Connect используются два разных режима проверки схемы: строгий и совместимый . Строгий режим проверки требует, чтобы схема базы данных точно соответствовала схеме приложения до развертывания схемы приложения. Совместимый режим проверки требует, чтобы схема базы данных была совместима со схемой приложения, то есть элементы в вашей базе данных, которые не используются схемой приложения, остаются неизмененными.
Режимы проверки схемы и рекомендации по миграции схем описаны в руководстве по управлению схемами и коннекторами.
Режим проверки определяется с помощью ключа schemaValidation в файле dataconnect.yaml . Если schemaValidation не указан, CLI применяет совместимые изменения и запрашивает подтверждение перед выполнением любых строгих изменений. См. справочник по настройке .
Управление изменениями в коннекторах
При выполнении firebase deploy интерфейс командной строки инициирует обновление соответствующих коннекторов. Интерфейс анализирует изменения в каждом коннекторе и выдает набор оценочных сообщений, касающихся изменений в коннекторах, которые могут привести к неожиданному поведению (сообщения уровня предупреждения) или сбоям (сообщения уровня нарушения совместимости) в предыдущих версиях клиентского кода.
| оценка воздействия | Сценарий |
|---|---|
| Уровень предупреждения (совместимость с проводным подключением, возможно изменение поведения) |
|
| Уровень риска (несовместимость проводного соединения, может привести к сбоям в работе клиентов) |
|
| Уровень риска (несовместимость сети, приведет к сбоям в работе клиентов) |
|
В интерактивных средах CLI отображает оценку каждого коннектора и запрашивает необходимые изменения. Передача флага --force эквивалентна принятию всех оценок.
В неинтерактивных средах:
- Если будут получены только предупреждения (возможные изменения в поведении), будут развернуты все коннекторы, и предупреждения будут записаны в терминал.
- Если произойдут какие-либо критические проверки, коннекторы не будут развернуты, а предупреждения будут записаны в терминал. Вы можете переопределить это с помощью флага
--force.
код авторизации аудита
Data Connect помогает вам провести аудит вашей стратегии авторизации, анализируя код коннектора при развертывании на сервере с помощью firebase deploy из Firebase 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 схемы и коннектора. Если генерация не удастся, ошибки будут выведены в стандартный вывод, сгенерированный код не будет изменен, и выполнение команды продолжится. | |
–-only connectorId:platform | Генерировать 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 на владение схемой.
Для существующих (модернизированных) баз данных у вас может быть собственный рабочий процесс миграции схем, и вы хотите самостоятельно сохранять права собственности на схемы. Если это ваш предпочтительный способ, обязательно откажитесь от выполнения миграции SQL-запросов в dataconnect:sql:setup . В результате отказа Data Connect 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> | Владелец схемы. Обладает всеми правами доступа ко всем таблицам и последовательностям в схеме. | Эта роль в сочетании с ролью IAM roles/cloudsql.client role предоставляет разрешение на выполнение миграции базы данных.Например, при вызове команды firebase dataconnect:sql:migrate . | Да |
| суперпользователь | cloudsqlsuperuser | Встроенная роль суперпользователя с полными правами доступа к базе данных. Помимо прав владельца, он может создавать схемы, удалять схемы, устанавливать расширения и выполнять любые другие административные задачи. Доступ к нему осуществляется через командную строку путем входа в систему под именем пользователя "firebasesuperuser". | Необходимо для установки расширений, создания исходной схемы и предоставления другим пользователям любых доступных ролей SQL. Если пользователю, не являющемуся администратором, необходимы права суперпользователя, миграция завершится неудачей, и пользователю будет предложено обратиться к администратору базы данных (т.е. к пользователю с roles/cloudsql.admin ) с просьбой выполнить привилегированные SQL-команды. | Предоставляется пользователям с roles/cloudsql.admin и не может быть предоставлена напрямую из Firebase CLI. |
| Командование | Описание | |
|---|---|---|
firebase dataconnect:sql:grant | Флаг/Параметр | Описание |
-R, --role role | Роль SQL, которую необходимо предоставить: владелец, писатель или читатель. | |
-E, --email email_address | Адрес электронной почты пользователя или учетной записи службы, которой необходимо предоставить роль. | |
Глобальные опции
Следующие глобальные параметры применяются ко всем командам:
- Параметр
--jsonпреобразует вывод командной строки в формат JSON для последующего анализа другими инструментами. - Опции
--noninteractiveи--interactiveпри необходимости отменяют автоматическое определение сред, отличных от TTY.