Перед использованием эмулятора Extensions с вашим приложением убедитесь, что вы понимаете общий рабочий процесс Firebase Local Emulator Suite , а также что вы установили и настроили Local Emulator Suite и ознакомились с его командами CLI .
В этом руководстве также предполагается, что вы знакомы с Firebase Extensions и знаете, как их использовать в своих приложениях Firebase .
Что я могу делать с эмулятором Extensions ?
С эмулятором Extensions вы можете устанавливать и управлять расширениями в безопасной локальной среде и лучше понимать их возможности, минимизируя при этом расходы на выставление счетов. Эмулятор запускает функции вашего расширения локально, включая фоновые функции, запускаемые событиями, с использованием эмуляторов для Cloud Firestore , Realtime Database , Cloud Storage for Firebase , Authentication and 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 и живых ресурсов. К таким проектам обычно обращаются через codelabs или другие руководства. Идентификаторы демонстрационных проектов имеют префикс | При работе с демонстрационными проектами Firebase ваши приложения и код взаимодействуют только с эмуляторами. Если ваше приложение попытается взаимодействовать с ресурсом, для которого не запущен эмулятор, этот код завершится ошибкой. |
Мы рекомендуем вам использовать демо-проекты везде, где это возможно. Преимущества включают:
- Более простая настройка, поскольку вы можете запускать эмуляторы, даже не создавая проект 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 позволяет вам тестировать расширения способом, максимально приближенным к производственному опыту. Однако есть некоторые отличия от производственного поведения.
Облачный 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 .