Catch up on everthing we announced at this year's Firebase Summit. Learn more

Подключите свое приложение к эмулятору облачного хранилища

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

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

Пакет локального эмулятора Firebase эмулирует продукты для одного проекта Firebase.

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

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

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

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

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

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

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

Демо

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

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

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

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

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

Настройте свое приложение на взаимодействие с эмуляторами

Платформы Android, Apple и веб-SDK

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

Android
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
Быстрый
Storage.storage().useEmulator(withHost:"localhost", port:9199)
Интернет v8
var storage = firebase.storage();
storage.useEmulator("localhost", 9199);
Интернет v9
import { getStorage, connectStorageEmulator } from "firebase/storage";

const storage = getStorage();
connectStorageEmulator(storage, "localhost", 9199);

Никакие дополнительные настройки не требуется , чтобы проверить функции Облака запускаемых событий Cloud Storage с помощью эмулятора. Когда оба эмулятора Cloud Storage и Cloud Functions работают, они автоматически работают вместе.

Административные SDK

В Firebase администратор SDKs автоматически подключаться к эмулятору Cloud Storage , когда FIREBASE_STORAGE_EMULATOR_HOST переменной среды:

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

Обратите внимание, что эмулятор облачных функций автоматически распознает эмулятор облачного хранилища, поэтому вы можете пропустить этот шаг при тестировании интеграции между облачными функциями и эмуляторами облачного хранилища. Переменная среды будет автоматически установлена ​​для Admin SDK в облачном хранилище.

При подключении к эмулятору Cloud Storage из любой другой среды вам нужно будет указать идентификатор проекта. Вы можете передать идентификатор проекта в initializeApp непосредственно или установить GCLOUD_PROJECT переменного окружение. Обратите внимание, что вам не нужно использовать ваш настоящий идентификатор проекта Firebase; эмулятор Cloud Storage будет принимать любой идентификатор проекта, если он имеет допустимый формат .

Административный SDK для Node.js
admin.initializeApp({ projectId: "your-project-id" });
Переменная среды
export GCLOUD_PROJECT="your-project-id"

Импорт и экспорт данных

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

firebase emulators:export ./dir

В тестах при запуске эмулятора импортируйте базовые данные.

firebase emulators:start --import=./dir

Вы можете указать эмулятор экспорта данных при завершении работы, либо указав путь экспорта или просто используя путь , пройденный к --import флага.

firebase emulators:start --import=./dir --export-on-exit

Этот импорт и экспорт данных вариантов работа с firebase emulators:exec команды , а также. Более подробную информацию , обратитесь к ссылке команды эмулятора .

Чем эмулятор Cloud Storage отличается от продакшена

Для тестирования клиентских приложений эмулятор облачного хранилища почти идеально подходит для производственной среды в отношении поверхности Firebase API. Ожидается, что все команды Firebase будут работать между обычными SDK Firebase (веб-платформа, Android и Apple).

Для тестирования серверных приложений существуют ограничения. В пакетах SDK для администрирования Firebase используется поверхность Google Cloud API, и не все конечные точки этого API эмулируются. Как правило, все, что можно сделать из клиентских SDK (загрузка или удаление файлов, получение и установка метаданных), также реализовано для использования из Admin SDK, но все остальное - нет. Важные исключения перечислены ниже.

Cloud IAM

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

Уведомления Pub / Sub

Эмулятор Cloud Storage не интегрируется с эмулятором Cloud Pub / Sub и, следовательно, не поддерживает создание каналов / уведомлений для изменений объекта хранилища. Мы рекомендуем напрямую использовать триггеры Cloud Functions Storage.

Метаданные на уровне сегмента

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

Что дальше?

  • Для куратором множества видео и подробные инструкции к примерам, следовать Firebase Эмуляторы Training Playlist .
  • Поскольку запускаемые функции типичная интеграция с Cloud Storage, узнать больше о функциях Cloud для Firebase эмулятора на функции Run локально .