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

Прежде чем использовать эмулятор 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 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 не требуется доступ к Интернету.

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

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

Предположим, вас интересует расширение 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 UI для добавления данных в коллекцию документов электронной почты и настройки других внутренних ресурсов, как того требует расширение Trigger Email.

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

firebase emulators:exec my-test.sh

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

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

Облачный IAM

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

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

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

Что дальше?