Firebase-tools: Das Hosting führt keine Funktion aus, wenn die Funktionsregion nicht die Standardeinstellung ist

Erstellt am 28. Juli 2018  ·  41Kommentare  ·  Quelle: firebase/firebase-tools

Versions Information

4.00

Plattforminformationen

OSX

Schritte zum Reproduzieren

Funktion für europe-west1 bereitgestellt

// function code
const functions = require('firebase-functions');

exports.helloIvanA = functions
  .region('europe-west1')
  .https.onRequest((request, response) => {
    response.send('Hello from Ivan!');
  });

// firebase.json
{
  "hosting": {
    "public": "public",

    "rewrites": [
      {
        "source": "**",
        "function": "helloIvanA"
      }
    ]
  }
}

Erwartetes Verhalten

https://blablabla.firebaseapp.com erhält Daten von helloIvanA

Tatsächliches Verhalten

https://blablabla.firebaseapp.com leitet zu https://us-central1-yushkarala.cloudfunctions.net/helloIvanA/ weiter
und gibt
Error: Forbidden Your client does not have permission to get URL /helloIvanA/ from this server.

Hilfreichster Kommentar

Würde das gerne umgesetzt sehen. Meine Besucher kommen aus Europa und die TTFB von us-central1 ist mindestens dreimal so groß wie europe-west1 .

Alle 41 Kommentare

Hallo, das ist das erwartete Verhalten, siehe https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , das blaue Kästchen zeigt an, dass alle Funktionen, die als Hosting-Weiterleitungen dienen, in „us-central1“ sein müssen, das ist aufgrund der Tatsache, dass dort der Ursprung des Hostings liegt.

Vielen Dank, gibt es eine Chance, dass dieses erwartete Verhalten in naher Zukunft oder zumindest in Zukunft geändert wird?

Hallo, es wird sich in Zukunft ändern, aber nicht in naher Zukunft. Dies hängt davon ab, wann der Start von Firebase Hosting in anderen Regionen erfolgt.

Hallo,
Mein Problem ist diesem sehr ähnlich, aber meine Funktionen sollten sich in der EU befinden, da es ein externes Netzwerk verwendet und die Latenz auf diese Weise viel besser ist (2-4 Sek. vs. 4-600 ms) Ausführungszeit
Beschrieb mein Problem in:
https://github.com/firebase/firebase-js-sdk/issues/1101
also gibt es im Moment noch keine Lösung, um Umschreibungen in eine andere Region zu verwenden?
(Ich habe eine Problemumgehung, indem ich direkte Links verwende, um die EU-Funktion zu erreichen, aber das ist von der Entwicklungsseite nicht ideal, ich muss alles neu bereitstellen, um es zu testen.)

Würde das gerne umgesetzt sehen. Meine Besucher kommen aus Europa und die TTFB von us-central1 ist mindestens dreimal so groß wie europe-west1 .

Hallo, es wird sich in Zukunft ändern, aber nicht in naher Zukunft. Dies hängt davon ab, wann der Start von Firebase Hosting in anderen Regionen erfolgt.

Hallo @laurenzlong ,

Bedeutet das, dass wir, wenn Hosting über andere Standorte als us-central1 verfügbar sein wird, auch die folgende Einschränkung umgehen können?
Important: If you are using HTTP functions to serve dynamic content for hosting, you must use us-central1. aus Dokument

Ich brauche diese Funktion für meine Anwendung. Also, je früher, desto besser :)!

Vielen Dank für all dies.

Eine fett gedruckte Warnung sollte geschrieben werden, bis dies behoben ist. Ich habe zu viel Zeit damit verbracht, bis mir klar wurde, was passiert.
Fügen Sie den Umschreibungen zumindest eine region -Option hinzu, damit wir nach Europa umleiten können.

Hoffen Sie, dass die Cloud-Funktion für Firebase die Option region wie die Einstellung cloud run unterstützt. Ich verwende die Region tokyo . Es ist wirklich weit von us-central1 entfernt.

Bedeutet das, dass wir, wenn Hosting über andere Standorte als us-central1 verfügbar sein wird, auch die folgende Einschränkung umgehen können?
Important: If you are using HTTP functions to serve dynamic content for hosting, you must use us-central1. aus Dokument

Hallo @laurenzlong ,

hast du welche (gut)? Neuigkeiten dazu?

Ich stimme zu, dass, wie @wangchou sagte, Cloud Run eine Alternative wäre, aber es fügt einen Stapel von Diensten / Technologien hinzu.

In der Hoffnung, Sie bald zu lesen. Danke!

Wir untersuchen dies noch, aber im Moment konzentriert sich unsere Ursprungsinfrastruktur auf us-central , was bedeutet, dass das Zulassen von Funktions-Proxys in anderen Regionen in den meisten Fällen zu zusätzlicher Latenz führen würde. Zum Beispiel:

tokyo -> CDN edge -> origin (us-central) -> function (tokyo)

Das bedeutet, dass die Round-Trip-Zeit tatsächlich so etwas wie eine Verdopplung bewirkt.

Wir untersuchen die Erweiterung der Standorte unserer Ursprungsinfrastruktur, aber bis dahin sind wir vorsichtig, diese Funktion hinzuzufügen, da sie eher Schaden als Nutzen anrichten wird.

@mbleigh – Könnten Sie uns bitte eine Schätzung geben, wann der Hosting-Ursprung außerhalb der USA liegen wird?

Die gesamte Firebase-Umgebung ist erstaunlich, aber das lässt uns zweimal überlegen, bevor wir darauf umsteigen. Danke schön

Ich weiß wirklich nicht, warum dieses Problem geschlossen wurde, wenn es nicht gelöst wurde, und stoße auf +1.

Zweitens ist Firebase erstaunlich, aber für europäische Benutzer ist dies eine große Einschränkung.

Entschuldigung, wir können die Zeitpläne nicht kommentieren, da sie sich ein wenig zu sehr ändern können. Ich schätze die anhaltende Stimme, die dies als Feature unterstützt, das ist definitiv etwas, das wir bei der Planung und Entwicklung des Produkts berücksichtigen.

Ich habe ein Problem, das damit zusammenhängen könnte, aber ich verstehe das nicht ganz, also weiß ich es nicht. Wenn jemand, der es besser weiß und Zeit hat, dazu etwas sagen möchte, lesen Sie bitte diese Frage:

https://stackoverflow.com/questions/57367131/403-from-deployed-firebase-function

Es wäre eine großartige Sache, dies zu haben, wir könnten endlich eine Hosting-Umschreibung zu unseren Funktionen hinzufügen, die bereits in Europa-West1 leben.

Wäre in der Tat großartig. Verwenden Sie vorerst auch Weiterleitungen, wie @hgghyxo erwähnt:

Funktionsname api
Region europe-west1

firebase.json

"redirects": {
    {
          "source": "/api/endpoint",
          "destination": "https://europe-west1-project-id.cloudfunctions.net/api/endpoint",
          "type": 301
    },
    ...
}

@mcoevert kommentierte am 19. August 2019, 10:36 Uhr GMT+2 :

Wäre in der Tat großartig. Verwenden Sie vorerst auch Weiterleitungen, wie @hgghyxo erwähnt:

Umleitungen werden die CORS-Probleme jedoch nicht lösen.

Ich würde auch gerne Unterstützung aus der Region Europa sehen.

Es scheint, dass eine Umschreibung jetzt mit einem Cloud Run-Dienst vorgenommen werden kann, der in der Region europe-west1 gehostet wird (derzeit die einzige europäische Region, die für Cloud Run verfügbar ist). Es ist nicht ganz dasselbe, aber ziemlich nah dran.

Hallo, das ist das erwartete Verhalten, siehe https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , das blaue Kästchen zeigt an, dass alle Funktionen, die als Hosting-Weiterleitungen dienen, in „us-central1“ sein müssen, das ist aufgrund der Tatsache, dass dort der Ursprung des Hostings liegt.

Tut mir leid, aber ein winziges blaues Kästchen wird leicht übersehen. Wir haben zu viele Stunden mit diesem Problem verschwendet, weil wir dachten, es handele sich bei uns um ein Konfigurationsproblem.

Warum ist das geschlossen - es ist ein Thema für uns in Europa. Gibt es eine Erklärung, warum es nur für uns in der Region funktioniert?

Dieses Problem wird geschlossen, da es sich um eine Funktionsanforderung für Firebase-Hosting handelt, die nicht direkt in der Firebase-CLI adressiert werden kann. Funktionsanfragen werden intern nachverfolgt, und ich möchte Sie ermutigen, über dieses Formular Support für weitere Regionen anzufordern .

Uns ist auf jeden Fall bewusst, dass viele von Ihnen diese Funktion wünschen, danke für das Feedback!

Dieses Problem wird geschlossen, da es sich um eine Funktionsanforderung für Firebase-Hosting handelt, die nicht direkt in der Firebase-CLI adressiert werden kann. Funktionsanfragen werden intern nachverfolgt, und ich möchte Sie ermutigen, über dieses Formular Support für weitere Regionen anzufordern .

Uns ist auf jeden Fall bewusst, dass viele von Ihnen diese Funktion wünschen, danke für das Feedback!

Feature Requests werden nur intern getrackt? Bringt das nicht viele doppelte Anfragen? Ich möchte zeigen, dass diese Features auch Regionen außerhalb der USA unterstützen.

Ja – wenn Sie eine Funktionsanfrage senden, werden wir sie für unser internes Tracking mit anderen deduplizieren (und es hilft definitiv, mehr Unterstützung für Anfragen zu zeigen!).

Sie können Cloud Run anstelle einer Cloud-Funktion verwenden, wenn Sie keine VPC benötigen. Cloud Run (vollständig verwaltet) kann derzeit keine Verbindung zum VPC-Netzwerk herstellen. Eine Problemumgehung, die ich getestet habe, um die VPC + benutzerdefinierte Domäne + Cloud-Funktion zu verwenden, besteht darin, einen Cloud Run mit einer benutzerdefinierten Domäne zu verwenden, die ein Proxy für die Cloud-Funktion ist. Es fügt ein wenig Overhead hinzu, aber wenn sich Cloud Run und Cloud Function in derselben Region befinden, sollte es theoretisch keine große Latenz geben. Abgesehen davon habe ich es über einen Monat überwacht und Cloud Run Beta ist nicht 100 % so stabil:

image

Dies ist ein Repo mit dem Proxy, den ich verwendet habe, wenn Sie ihn in Cloud Run bereitstellen und ausprobieren möchten https://github.com/reactgraphqlacademy/cloud-run-proxy

Ich habe einen Cloudflare-Worker mit einem Proxy in derselben Region wie die Cloud-Funktion getestet und ihn über denselben Zeitraum überwacht. Es war langsamer als Cloud Run, obwohl es 100 % zuverlässig war.

image

Sie können diesen Code verwenden, wenn Sie den Cloudflare-Worker https://gist.github.com/alexlbr/814446f03cf12e22f07ccaa580eb1154 testen möchten. @wangchou Wenn ich mich nicht irre, könnten Sie den Cloudflare-Worker in Tokio ausführen, sodass er näher am Rand sein kann, an dem sich der Benutzer befindet, da Cloud Run in dieser Region noch nicht unterstützt wird.

Im Folgenden wird die Cloud-Funktion im selben Zeitraum direkt ohne Proxy überwacht.

image

Ich habe https://uptimerobot.com für die Überwachung verwendet.

Cloud Run sieht für mich sehr vielversprechend aus, ich kann die vollständige Veröffentlichung kaum erwarten

Irgendwelche Updates dazu? Warum ist es geschlossen?

Unmöglich?

@abdellahaski @l2aelba Wir hören hier definitiv den Schmerzpunkt. Wie @mbleigh bereits sagte, ist das Einreichen als Funktionsanfrage (siehe unten) der beste Weg, um uns dabei zu helfen, intern Fuß zu fassen. Danke!

Dieses Problem wird geschlossen, da es sich um eine Funktionsanforderung für Firebase-Hosting handelt, die nicht direkt in der Firebase-CLI adressiert werden kann. Funktionsanfragen werden intern nachverfolgt, und ich möchte Sie ermutigen, über dieses Formular Support für weitere Regionen anzufordern .

Uns ist auf jeden Fall bewusst, dass viele von Ihnen diese Funktion wünschen, danke für das Feedback!

Würde auch gerne asia-east2 Unterstützung sehen.

Ich bin kurz davor, Firebase wegen der schlechten Dokumentation aufzugeben.

Ein absolutes Minimum wäre, eine Warnung auszugeben, wenn es keine Funktion in us-central gibt, die der Funktion in der Weiterleitung entspricht!

Ich schlage vor, dass das Firebase-Team versucht, jemanden ein Projekt entwickeln zu lassen, bei dem sich die Benutzer außerhalb der USA befinden. Es ist verrückt, dass wir für solche Sachen keine Warnungen bekommen.

Helfen wir uns gegenseitig, indem wir tun, was sie verlangen - posten Sie eine Feature-Anfrage:
https://firebase.google.com/support/troubleshooter/report/features

Hier ist ein Entwurf zum Kopieren/Einfügen - einfach fertig :)

Hosting schreibt Funktionen in Nicht-US-Regionen um
https://github.com/firebase/firebase-tools/issues/842

Sie müssen wirklich in der Lage sein, Umschreibungen für Funktionen in anderen Regionen als US-Central1 zu erstellen.

Unsere Zielgruppe ist nicht in den USA und das Fehlen dieser Funktion ist ein großer Schmerzpunkt für uns, was uns unsicher macht, unseren Tech-Stack insgesamt Firebase zu widmen.

Bitte erwägen Sie, diese Funktion in naher Zukunft zu priorisieren.
Danke schön,

image

Hier hoffe ich auf diese Funktion bald!

Hat jemand nachgeforscht, Cloud Run anstelle von Cloud-Funktionen zu verwenden?

Cloud Run bietet Funktionen auch in anderen Regionen

Zwei Jahre später und das ist immer noch ein Problem. Warum ist das übrigens geschlossen?

Hallo, das ist das erwartete Verhalten, siehe https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , das blaue Kästchen zeigt an, dass alle Funktionen, die als Hosting-Weiterleitungen dienen, in „us-central1“ sein müssen, das ist aufgrund der Tatsache, dass dort der Ursprung des Hostings liegt.

Paging @laurenzlong

Cloud Functions ist in den folgenden Regionen verfügbar:

  • us-central1 (Iowa)
  • us-east1 (South Carolina)
  • us-east4 (Nord-Virginia)
  • europa-west1 (Belgien)
  • europa-west2 (London)
  • europa-west3 (Frankfurt)
  • asien-ost2 (Hongkong)
  • Asien-Nordosten1 (Tokio)

Ich habe eur3 (europe-west) gewählt, weil es zusammen mit us-central1 ganz oben auf der Liste stand und von anderen Standorten getrennt war. Dachte, diese beiden sind Standard.

Was soll ich tun, gibt es dafür eine Lösung?

Warum?????

Hallo Leute, vielen Dank für all die Rückmeldungen dazu. Wir haben definitiv gehört, dass Sie Firebase Hosting-Supportfunktionen außerhalb von us-central1 sehen möchten. Leider muss noch eine Menge Infrastrukturarbeit geleistet werden, bevor es gut funktioniert, also können wir nicht einfach einen Schalter umlegen und andere Regionen online bringen.

Wir haben davon ziemlich oft als Funktionsanfrage gehört, und es steht auf unserer Roadmap, obwohl ich mich nicht zu bestimmten Zeitplänen äußern kann. Dieses Repository ist nicht der richtige Ort, um Funktionsanfragen für das Firebase-Hosting-Produkt als Ganzes zu posten. Wenn Sie an dieser Funktion interessiert sind, reichen Sie bitte eine Funktionsanfrage ein , damit wir das Interesse daran intern weiter verfolgen und die Arbeit priorisieren können das muss passieren, um es zu ermöglichen.

Danke an alle!

Hallo,

Ich denke, es interessiert niemanden, wo Sie hosten, wir wollen nur eine einfache Lösung, damit dieser Fehler nicht angezeigt wird.

Diese Korrektur kann in Ihrem Code vorgenommen werden, nichts zu tun, wo Sie Ihr Hosting durchführen.

Und das ist keine Anfrage für ein Feature, die Beseitigung eines Fehlers wird kein Feature. Entfernen Sie einfach diesen Fehler

Danke..

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen