Catch up on highlights from Firebase at Google I/O 2023. Learn more

Используйте эмулятор расширений для оценки расширений

Прежде чем использовать эмулятор Extensions с вашим приложением, убедитесь, что вы понимаете общий рабочий процесс Firebase Local Emulator Suite , а также что вы устанавливаете и настраиваете Local Emulator Suite и проверяете его команды CLI .

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

Что я могу сделать с эмулятором расширений?

С помощью эмулятора расширений вы можете устанавливать расширения и управлять ими в безопасной локальной среде и лучше понимать их возможности, сводя к минимуму расходы на выставление счетов. Эмулятор запускает функции вашего расширения локально, в том числе функции, запускаемые в фоновом режиме, с использованием эмуляторов для Cloud Firestore, базы данных в реальном времени, облачного хранилища для Firebase, аутентификации и Pub/Sub, а также функции, запускаемые Eventarc, реализованные в Cloud Functions v2.

Выберите проект Firebase

Firebase Local Emulator Suite эмулирует продукты для одного проекта Firebase.

Чтобы выбрать проект для использования, перед запуском эмуляторов в CLI запустите firebase use в своем рабочем каталоге. Или вы можете передать флаг --project каждой команде эмулятора.

Local Emulator Suite поддерживает эмуляцию реальных проектов Firebase и демонстрационных проектов.

Тип проекта Функции Использование с эмуляторами
Настоящий

Настоящий проект Firebase — это тот, который вы создали и настроили (скорее всего, через консоль Firebase).

Реальные проекты имеют активные ресурсы, такие как экземпляры базы данных, сегменты хранилища, функции или любые другие ресурсы, которые вы настроили для этого проекта Firebase.

При работе с реальными проектами Firebase вы можете запускать эмуляторы для любого или всех поддерживаемых продуктов.

Для любых продуктов, которые вы не эмулируете, ваши приложения и код будут взаимодействовать с активным ресурсом (экземпляром базы данных, сегментом хранилища, функцией и т. д.).

Демо

Демонстрационный проект Firebase не имеет реальной конфигурации Firebase и живых ресурсов. Доступ к этим проектам обычно осуществляется через лаборатории кода или другие учебные пособия.

Идентификаторы проектов для демонстрационных проектов имеют префикс demo- .

При работе с демонстрационными проектами Firebase ваши приложения и код взаимодействуют только с эмуляторами. Если ваше приложение попытается взаимодействовать с ресурсом, для которого не запущен эмулятор, этот код завершится ошибкой.

Мы рекомендуем вам использовать демонстрационные проекты везде, где это возможно. Преимущества включают в себя:

  • Простая настройка, так как вы можете запускать эмуляторы, даже не создавая проект Firebase.
  • Повышенная безопасность, поскольку, если ваш код случайно вызывает неэмулируемые (производственные) ресурсы, нет никаких шансов на изменение данных, использование и выставление счетов.
  • Улучшенная автономная поддержка, поскольку нет необходимости в доступе в Интернет для загрузки конфигурации SDK.

Установите и оцените расширение

Использование эмулятора расширений для оценки того, соответствует ли расширение вашим потребностям, очень просто.

Предположим, вас интересует расширение Trigger Email ( firestore-send-email ), хотя следующий рабочий процесс охватывает любое расширение. При запуске с локальными эмуляторами Trigger Email автоматически использует эмуляторы Cloud Firestore и Cloud Functions.

Чтобы оценить расширение локально:

  1. Добавьте расширение в манифест локальных расширений. Манифест расширений — это список экземпляров расширений и их конфигураций.

    firebase ext:install --local firebase/firestore-send-email

    Выполнение приведенной выше команды предложит вам настроить последнюю версию расширения firebase/firestore-send-email и сохранить конфигурацию в манифесте, но не развернет конфигурацию в вашем проекте. Подробнее об этом см. в разделе Управление конфигурацией расширений с помощью манифестов.

  2. Запустите Local Emulator Suite как обычно.

    firebase emulators:start

Теперь, используя экземпляр расширения firestore-send-email указанный в вашем манифесте, Local Emulator Suite загрузит исходный код этого расширения в ~/.cache/firebase/extensions . После загрузки исходников запустится Local Emulator Suite, и вы сможете активировать любые фоновые функции расширения и подключить свое приложение к Local Emulator Suite, чтобы проверить их интеграцию с вашим приложением.

Пользовательский интерфейс Emulator Suite можно использовать для добавления данных в коллекцию документов электронной почты и настройки других внутренних ресурсов в соответствии с требованиями расширения Trigger Email.

В качестве альтернативы, для неинтерактивных сред тестирования, таких как рабочие процессы непрерывной интеграции, вы можете написать тестовый сценарий для оценки расширения, который, среди прочего, заполняет необходимые данные Cloud Firestore и запускает функции. Затем вы должны вызвать Local Emulator Suite для выполнения вашего тестового сценария:

firebase emulators:exec my-test.sh

Чем тестирование с помощью эмулятора Extensions отличается от производства

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

Облачный IAM

Firebase Emulator Suite не пытается воспроизвести или учесть какое-либо поведение, связанное с IAM, при запуске. Эмуляторы придерживаются предоставленных правил безопасности Firebase, но в ситуациях, когда обычно используется IAM, например, для установки облачных функций, вызывающих учетную запись службы и, следовательно, разрешения, эмулятор не настраивается и будет использовать глобально доступную учетную запись на вашем компьютере разработчика, аналогично запуску локального скрипта напрямую.

Ограничение типа срабатывания

В настоящее время Firebase Local Emulator Suite поддерживает только функции, инициируемые запросом HTTP, настраиваемые триггеры событий Eventarc для расширений и функции, инициируемые фоновыми событиями, для Cloud Firestore, базы данных реального времени, облачного хранилища для Firebase, аутентификации и Pub/Sub. Чтобы оценить расширения, использующие другие типы триггерных функций, вам необходимо установить расширение в тестовом проекте Firebase.

Что дальше?