Разница между запуском эмулятора firestore через `firebase` и `gcloud`?

#python #firebase #google-cloud-platform #google-cloud-firestore #gcloud

#python #firebase #google-облачная платформа #google-облако-firestore #gcloud

Вопрос:

В чем разница между запуском эмулятора firestore через:

 firebase emulators:start --only firestore
  

и:

 gcloud beta emulators firestore start
  

Оба варианта позволяют моему приложению Python обеспечивать связь с базой данных следующим образом:

 import google
from google.cloud import firestore

os.environ["FIRESTORE_EMULATOR_HOST"] = "localhost:8081"
os.environ["FIRESTORE_EMULATOR_HOST_PATH"] = "localhost:8081/firestore"
os.environ["FIRESTORE_HOST"] = "http://localhost:8081"

credentials = mock.Mock(spec=google.auth.credentials.Credentials)
client = firestore.Client(credentials=credentials)
  

Одно из отличий, которое я заметил сам, заключается в том, что firebase , похоже, уважает мой firebase.json , в частности порт хоста, указанный следующим образом:

 {
  "emulators": {
    "firestore": {
      "port": "8081"
    }
  }
}
  

С другой стороны, gcloud игнорирует firebase.json и вместо этого выбирает случайный порт, если я явно не передаю порт через --host-port . Является ли это частью большей разницы между ними и каковы некоторые другие различия?

Ответ №1:

Я просматривал документацию для обоих инструментов, и они делают почти одно и то же.

Используя инструмент Firebase, вы можете запускать эмуляторы для нескольких продуктов Firebase, тогда как команда gcloud позволяет запускать эмуляторы GCP. Firestore — это просто продукт, который у них обоих общий, и поэтому их утилита должна быть одинаковой или похожей.

Что касается функциональных различий, firebase предоставляет флаги --import и --export-on-exit , которые позволяют сохранять и восстанавливать данные между эмулируемыми сеансами. Это также предоставляет способ визуализировать, как правила безопасности обрабатывают текущие запросы.

Помимо этих функций я бы отметил различные способы настройки порта и файла правил:

  • firebase emulators использует firebase.json файл.
  • gcloud beta emulators использует флаги --host-port и --rules для достижения той же функциональности.

Обратите внимание, что эмулятор Firestore на GCP находится на стадии бета-тестирования, поэтому его официальная поддержка может быть ограниченной, и в него могут вноситься изменения. Также обратите внимание, что в документации Firestore от GCP вместо gcloud используется Firebase CLI.

В конце концов, вы должны использовать предпочитаемый вами инструмент, поскольку они оба работают для достижения одной и той же цели — эмуляции Firestore. Если вы уже работаете с Firebase CLI, я бы рекомендовал вам продолжать использовать его; если вы работаете с gcloud , используйте это.