Прежде чем использовать эмулятор Extensions в своем приложении, убедитесь, что вы понимаете общий рабочий процесс Firebase Local Emulator Suite, установили и настроили Local Emulator Suite и изучили команды CLI.
В этом руководстве также предполагается, что вы знакомы с Firebase Extensions и знаете, как использовать их в приложениях Firebase.
Что можно делать с помощью эмулятора Extensions?
С помощью эмулятора Extensions вы можете устанавливать расширения и управлять ими в безопасной локальной среде, а также лучше понимать их возможности, минимизируя при этом сумму к оплате. Эмулятор запускает функции расширения локально, в том числе фоновые функции, активируемые событиями, с помощью эмуляторов для Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication и Pub/Sub, а также функции, активируемые Eventarc, реализованные в Cloud Functions версии 2.
Выберите проект Firebase
Firebase Local Emulator Suite эмулирует продукты для одного проекта Firebase.
Чтобы выбрать проект, перед запуском эмуляторов выполните в CLI команду firebase use в рабочем каталоге. или передавать флаг --project каждой команде эмулятора.
Local Emulator Suite поддерживает эмуляцию реальных и демонстрационных проектов Firebase.
| Тип проекта | Функции | Использование с эмуляторами |
|---|---|---|
| Реал |
Реальный проект Firebase – это проект, который вы создали и настроили (скорее всего, в консоли Firebase). В реальных проектах есть активные ресурсы, такие как экземпляры баз данных, сегменты хранилища, функции и другие ресурсы, настроенные для этого проекта Firebase. |
При работе с реальными проектами Firebase вы можете запускать эмуляторы для любого или всех поддерживаемых продуктов. Для всех продуктов, которые вы не эмулируете, ваши приложения и код будут взаимодействовать с активным ресурсом (экземпляром базы данных, сегментом хранилища, функцией и т. д.). |
| Демонстрация |
В демонстрационном проекте Firebase нет реальной конфигурации Firebase и активных ресурсов. Обычно доступ к таким проектам осуществляется через практические работы или другие учебные материалы. Идентификаторы демопроектов имеют префикс |
При работе с демонстрационными проектами Firebase ваши приложения и код взаимодействуют только с эмуляторами. Если приложение попытается взаимодействовать с ресурсом, для которого эмулятор не запущен, код не сработает. |
Рекомендуем по возможности использовать демонстрационные проекты. Преимущества подписки на Google One включают:
- Простая настройка, поскольку вы можете запускать эмуляторы, не создавая проект Firebase.
- Повышенная безопасность. Если ваш код случайно вызовет неэмулированные (рабочие) ресурсы, данные не будут изменены, а плата за использование не будет взиматься.
- Улучшенная поддержка офлайн-режима, поскольку для скачивания конфигурации SDK не требуется доступ к интернету.
Как установить и оценить расширение
С помощью эмулятора Extensions можно легко оценить, соответствует ли расширение вашим требованиям.
Предположим, вас интересует расширение Trigger Email (firestore-send-email). Описанный ниже рабочий процесс подходит для любого расширения. При запуске с локальными эмуляторами Trigger Email будет автоматически использовать эмуляторы Cloud Firestore и Cloud Functions.
Чтобы оценить расширение локально:
Добавьте расширение в локальный манифест расширений. Манифест расширений – это список экземпляров расширений и их конфигураций.
firebase ext:install --local firebase/firestore-send-email
После выполнения этой команды вам будет предложено настроить последнюю версию расширения
firebase/firestore-send-emailи сохранить конфигурацию в манифесте, но она не будет развернута в вашем проекте. Подробнее о том, как управлять конфигурацией расширений с помощью манифестов…Запустите Local Emulator Suite как обычно.
firebase emulators:start
Теперь, используя экземпляр расширения firestore-send-email, указанный в манифесте, Local Emulator Suite скачает исходный код этого расширения в ~/.cache/firebase/extensions. После скачивания исходного кода запустится Local Emulator Suite, и вы сможете активировать любые функции расширения, запускаемые в фоновом режиме, а также подключить приложение к Local Emulator Suite, чтобы протестировать их интеграцию.
Вы можете использовать Emulator Suite UI, чтобы добавить данные в коллекцию документов электронной почты и настроить другие серверные ресурсы, как того требует расширение Trigger Email.
В неинтерактивных средах тестирования, например в рабочих процессах непрерывной интеграции, можно написать тестовый скрипт для оценки расширения, который, помимо прочего, заполняет необходимые данные Cloud Firestore и запускает функции. Затем вызовите Local Emulator Suite, чтобы выполнить тестовый скрипт:
firebase emulators:exec my-test.shЧем тестирование с помощью эмулятора Extensions отличается от работы в рабочей среде
Эмулятор Extensions позволяет тестировать расширения в условиях, максимально приближенных к реальным. Однако есть некоторые отличия от поведения в рабочей среде.
Cloud IAM
Firebase Emulator Suite не пытается воспроизводить или учитывать какое-либо поведение, связанное с IAM, при запуске. Эмуляторы соблюдают правила безопасности Firebase, но в ситуациях, когда обычно используется IAM, например для настройки сервисного аккаунта, вызывающего Cloud Functions, и, следовательно, разрешений, эмулятор не настраивается и будет использовать глобально доступный аккаунт на вашем компьютере для разработки, аналогично непосредственному запуску локального скрипта.
Ограничение по типу триггера
В настоящее время Firebase Local Emulator Suite поддерживает только функции, активируемые HTTP-запросами, триггеры пользовательских событий Eventarc для расширений и функции, активируемые фоновыми событиями для Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication и Pub/Sub. Чтобы оценить расширения, использующие другие типы триггерных функций, вам необходимо установить расширение в тестовом проекте Firebase.
Что дальше?
- Чтобы посмотреть подборку видео и подробные инструкции, перейдите к плейлисту с обучающими видео по эмуляторам Firebase.