Прежде чем подключать ваше приложение к эмулятору Cloud Storage for Firebase , убедитесь, что вы понимаете общий рабочий процесс Firebase Local Emulator Suite , а также установили и настроили Local Emulator Suite и изучили его команды CLI .
Выберите проект Firebase
Firebase Local Emulator Suite эмулирует продукты для одного проекта Firebase.
Чтобы выбрать используемый проект, перед запуском эмуляторов выполните в командной строке firebase use в вашей рабочей директории. Или же вы можете передать флаг --project каждой команде эмулятора.
Local Emulator Suite поддерживает эмуляцию реальных проектов Firebase и демонстрационных проектов.
| Тип проекта | Функции | Использовать с эмуляторами |
|---|---|---|
| Настоящий | Настоящий проект Firebase — это тот, который вы создали и настроили (скорее всего, через консоль Firebase ). В реальных проектах используются работающие ресурсы, такие как экземпляры баз данных, хранилища, функции или любые другие ресурсы, которые вы настроили для этого проекта Firebase. | При работе с реальными проектами Firebase вы можете запускать эмуляторы для любого или всех поддерживаемых продуктов. Для любых продуктов, которые вы не эмулируете, ваши приложения и код будут взаимодействовать с реальным ресурсом (экземпляром базы данных, хранилищем, функцией и т. д.). |
| Демо | Демонстрационный проект Firebase не содержит реальной конфигурации Firebase и работающих ресурсов. Доступ к таким проектам обычно осуществляется через Codelabs или другие обучающие материалы. Идентификаторы демонстрационных проектов имеют префикс | При работе с демонстрационными проектами Firebase ваши приложения и код взаимодействуют только с эмуляторами. Если ваше приложение попытается взаимодействовать с ресурсом, для которого эмулятор не запущен, этот код завершится ошибкой. |
Мы рекомендуем по возможности использовать демонстрационные проекты. Преимущества включают:
- Упрощенная настройка, поскольку вы можете запускать эмуляторы, не создавая проект Firebase.
- Повышенная безопасность, поскольку если ваш код случайно вызовет неэмулированные (производственные) ресурсы, исключается возможность изменения данных, их использования и выставления счетов.
- Улучшена поддержка работы в автономном режиме, поскольку для загрузки конфигурации SDK не требуется доступ к интернету.
Настройте ваше приложение для взаимодействия с эмуляторами.
Платформы Android, Apple и веб-SDK
Настройте конфигурацию приложения или тестовые классы для взаимодействия с эмулятором Cloud Storage for Firebase следующим образом.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
Быстрый
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "127.0.0.1", 9199); }
Web
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
Для тестирования облачных функций, запускаемых событиями Cloud Storage for Firebase с помощью эмулятора не требуется дополнительная настройка. Когда эмуляторы Cloud Storage for Firebase и Cloud Functions запущены одновременно, они автоматически работают вместе.
Admin SDK
При установке переменной среды FIREBASE_STORAGE_EMULATOR_HOST компоненты Firebase Admin SDK автоматически подключаются к эмулятору Cloud Storage for Firebase :
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
Обратите внимание, что эмулятор Cloud Functions автоматически распознает эмулятор Cloud Storage for Firebase поэтому вы можете пропустить этот шаг при тестировании интеграции между эмуляторами Cloud Functions и Cloud Storage for Firebase . Переменная среды будет автоматически установлена для Admin SDK в Cloud Storage for Firebase .
Если вы хотите, чтобы код Admin SDK подключался к общему эмулятору, работающему в другой среде, вам потребуется указать тот же идентификатор проекта, который вы задали с помощью Firebase CLI . Вы можете передать идентификатор проекта в initializeApp напрямую или установить переменную среды GCLOUD_PROJECT .
Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
Переменная окружающей среды
export GCLOUD_PROJECT="your-project-id"
Данные об импорте и экспорте
Эмуляторы базы данных и Cloud Storage for Firebase позволяют экспортировать данные из работающего экземпляра эмулятора. Определите базовый набор данных для использования в модульных тестах или рабочих процессах непрерывной интеграции, а затем экспортируйте его для совместного использования командой.
firebase emulators:export ./dirВ ходе тестирования при запуске эмулятора импортируйте базовые данные.
firebase emulators:start --import=./dirВы можете указать эмулятору экспортировать данные при завершении работы, либо указав путь для экспорта, либо просто используя путь, переданный флагу --import .
firebase emulators:start --import=./dir --export-on-exitЭти параметры импорта и экспорта данных также работают с командой firebase emulators:exec . Для получения дополнительной информации обратитесь к справочнику команд эмулятора .
Чем эмулятор Cloud Storage for Firebase отличается от рабочей среды?
Для тестирования клиентских приложений эмулятор Cloud Storage for Firebase практически идеально подходит для производственной среды с точки зрения доступности API Firebase. Ожидается, что все команды Firebase будут работать между стандартными SDK Firebase (веб-платформы, Android и Apple).
При тестировании серверных приложений существуют ограничения. SDK Firebase Admin используют API Google Cloud , и не все конечные точки этого API эмулируются. Как правило, все, что можно сделать из SDK клиента (загрузка или удаление файлов, получение и установка метаданных), также реализовано для использования из SDK Admin, но все, что выходит за их рамки, — нет. Ниже перечислены важные исключения.
Отличия от Google Cloud Storage
Продукт Cloud Storage for Firebase , включая эмулятор хранилища, предоставляет подмножество функций Google Cloud Storage (GCS), ориентированное на объекты хранения, что очень полезно для разработки приложений Firebase. Cloud Storage for Firebase отличается от GCS следующими особенностями:
- В настоящее время Cloud Storage for Firebase не поддерживает API для создания, отображения, получения или удаления сегментов хранилища
BucketAPI). - В API объектов Google Cloud Storage поддерживаются следующие методы:
copy,delete,get,insert,list,patch,rewrite,update.
Cloud IAM
Пакет эмуляторов Firebase Emulator Suite не пытается воспроизвести или учитывать поведение, связанное с IAM, при запуске. Эмуляторы придерживаются предоставленных правил безопасности Firebase, но в ситуациях, когда обычно используется IAM, например, для настройки учетной записи службы, вызывающей Cloud Functions, и, следовательно, разрешений, эмулятор не подлежит настройке и будет использовать глобально доступную учетную запись на вашей машине разработчика, аналогично запуску локального скрипта напрямую.
Уведомления Pub/Sub
Эмулятор Cloud Storage for Firebase не интегрируется с эмулятором Cloud Pub/Sub и, следовательно, не поддерживает создание каналов/уведомлений об изменениях объектов хранилища. Мы рекомендуем использовать триггеры Cloud Functions Storage напрямую.
Метаданные на уровне сегментов
Эмулятор Cloud Storage for Firebase не поддерживает никакие настройки на уровне сегментов, включая класс хранения, конфигурацию CORS на уровне сегментов, метки или политики хранения. Firebase планирует улучшить эту поддержку со временем.
Что дальше?
- Чтобы ознакомиться с тщательно подобранной подборкой видеороликов и подробными примерами, перейдите по ссылке на плейлист «Обучение работе с эмуляторами Firebase» .
- Поскольку запускаемые по триггеру функции являются типичной интеграцией с Cloud Storage for Firebase , подробнее об эмуляторе Cloud Functions for Firebase можно узнать в разделе «Запуск функций локально» .