Before connecting your app to the Cloud Storage for Firebase emulator, make sure that you understand the overall Firebase Local Emulator Suite workflow , and that you install and configure the Local Emulator Suite and review its CLI commands .
Выберите проект Firebase
Firebase Local Emulator Suite эмулирует продукты для одного проекта Firebase.
Чтобы выбрать используемый проект, перед запуском эмуляторов выполните в командной строке firebase use в вашей рабочей директории. Или же вы можете передать флаг --project каждой команде эмулятора.
Local Emulator Suite поддерживает эмуляцию реальных проектов Firebase и демонстрационных проектов.
| Тип проекта | Функции | Использовать с эмуляторами |
|---|---|---|
| Настоящий | Настоящий проект Firebase — это тот, который вы создали и настроили (скорее всего, через консоль Firebase ). В реальных проектах используются работающие ресурсы, такие как экземпляры баз данных, хранилища, функции или любые другие ресурсы, которые вы настроили для этого проекта Firebase. | При работе с реальными проектами Firebase вы можете запускать эмуляторы для любого или всех поддерживаемых продуктов. Для любых продуктов, которые вы не эмулируете, ваши приложения и код будут взаимодействовать с реальным ресурсом (экземпляром базы данных, хранилищем, функцией и т. д.). |
| Демо | Демонстрационный проект Firebase не содержит реальной конфигурации Firebase и работающих ресурсов. Доступ к таким проектам обычно осуществляется через Codelabs или другие обучающие материалы. Идентификаторы демонстрационных проектов имеют префикс | When working with demo Firebase projects, your apps and code interact with emulators only . If your app attempts to interact with a resource for which an emulator isn't running, that code will fail. |
Мы рекомендуем по возможности использовать демонстрационные проекты. Преимущества включают:
- Упрощенная настройка, поскольку вы можете запускать эмуляторы, не создавая проект 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)
Единство
FirebaseStorage storage = FirebaseStorage.DefaultInstance; // Connects to the Storage Emulator running on port 9199 storage.UseEmulator("127.0.0.1", 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); }
No additional setup is needed to test Cloud functions triggered by Cloud Storage for Firebase events using the emulator. When the Cloud Storage for Firebase and Cloud Functions emulators are both running, they automatically work together.
Admin SDK
При установке переменной среды FIREBASE_STORAGE_EMULATOR_HOST компоненты Firebase Admin SDK автоматически подключаются к эмулятору Cloud Storage for Firebase :
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
Note that the Cloud Functions emulator is automatically aware of the Cloud Storage for Firebase emulator so you can skip this step when testing integrations between Cloud Functions and Cloud Storage for Firebase emulators. The environment variable will be automatically set for the Admin SDK in Cloud Storage for Firebase .
If you want your Admin SDK code to connect to a shared emulator running in another environment, you will need to specify the the same project ID you set using the Firebase CLI . You can pass a project ID to initializeApp directly or set the GCLOUD_PROJECT environment variable.
Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
Переменная окружающей среды
export GCLOUD_PROJECT="your-project-id"
Данные об импорте и экспорте
The database and Cloud Storage for Firebase emulators allow you to export data from a running emulator instance. Define a baseline set of data to use in your unit tests or continuous integration workflows, then export it to be shared among the team.
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 отличается от рабочей среды?
For testing of client apps, the Cloud Storage for Firebase emulator aligns to production almost perfectly in regards to the Firebase API surface area. All Firebase commands are expected to work between the regular Firebase SDKs (Web, Android, and Apple platforms).
При тестировании серверных приложений существуют ограничения. SDK Firebase Admin используют API Google Cloud , и не все конечные точки этого API эмулируются. Как правило, все, что можно сделать из SDK клиента (загрузка или удаление файлов, получение и установка метаданных), также реализовано для использования из SDK Admin, но все, что выходит за их рамки, — нет. Ниже перечислены важные исключения.
Отличия от Google Cloud Storage
The Cloud Storage for Firebase product, including the Storage emulator, provides a subset of Google Cloud Storage (GCS) functionality focusing on storage objects that is very useful for developing Firebase apps. Cloud Storage for Firebase differs from GCS in the following ways:
- В настоящее время 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
The Cloud Storage for Firebase emulator does not integrate with the Cloud Pub/Sub emulator and thus does not support creating channels/notifications for storage object changes. We recommend using Cloud Functions Storage triggers directly.
Метаданные на уровне сегментов
The Cloud Storage for Firebase emulator does not support any bucket-level configuration including storage class, bucket-level CORS configuration, labels, or retention policies. Firebase intends to improve this support over time.
Что дальше?
- Чтобы ознакомиться с тщательно подобранной подборкой видеороликов и подробными примерами, перейдите по ссылке на плейлист «Обучение работе с эмуляторами Firebase» .
- Поскольку запускаемые по триггеру функции являются типичной интеграцией с Cloud Storage for Firebase , подробнее об эмуляторе Cloud Functions for Firebase можно узнать в разделе «Запуск функций локально» .