Aufrufen einer Cloud-Funktion von einer anderen Cloud-Funktion

Lesezeit: 3 Minuten

Benutzer-Avatar
wild

Ich verwende eine Cloud-Funktion, um eine andere Cloud-Funktion auf der kostenlosen Spark-Ebene aufzurufen.

Gibt es eine spezielle Möglichkeit, eine andere Cloud-Funktion aufzurufen? Oder verwenden Sie nur eine Standard-HTTP-Anfrage?

Ich habe versucht, die andere Funktion direkt wie folgt aufzurufen:

exports.purchaseTicket = functions.https.onRequest((req, res) => {    
  fetch('https://us-central1-functions-****.cloudfunctions.net/validate')
    .then(response => response.json())
    .then(json => res.status(201).json(json))
})

Aber ich bekomme den Fehler

FetchError: Anfrage an
https://us-central1-functions-****.cloudfunctions.net/validate fehlgeschlagen, Grund: getaddrinfo ENOTFOUND us-central1-functions-*****.cloudfunctions.net us-central1-functions-*****.cloudfunctions.net:443

Das klingt so, als ob Firebase die Verbindung blockiert, obwohl sie im Besitz von Google ist, und daher nicht gesperrt werden sollte

Der Spark-Plan lässt nur ausgehende Netzwerkanfragen an Google-eigene Dienste zu.

Wie kann ich eine Cloud-Funktion verwenden, um eine andere Cloud-Funktion aufzurufen?

  • Wenn Sie aus irgendeinem Grund “gestufte” Funktionen benötigen (z. B. wenn Sie eine Reihe von HTTP-Anforderungen von Drittanbietern ausführen). Ich würde vorschlagen, zu veröffentlichen Cloud Pub/Sub was asynchron triggern könnte a Cloud Pub/Sub-Funktion. HTTP-Trigger sind synchron, haben eine Zeitüberschreitung und sind nicht „dauerhaft“.

    – James Daniels

    14. März 2017 um 19:40 Uhr


  • *.cloudfunctions.net ist derzeit nicht auf der weißen Liste für den Netzwerkzugriff im kostenlosen Spark-Tarif. Whitelisting im Allgemeinen dient dazu, den gelegentlichen Missbrauch von Nicht-Google-Diensten zu verhindern, und Sie können sich *.cloudfunctions.net als Nicht-Google-Dienste vorstellen (weil Entwickler wie Sie tatsächlich den gesamten Bereich teilen, um Ihren eigenen bereitzustellen).

    – Doug Stevenson

    15. März 2017 um 10:54 Uhr

  • Was passiert, wenn wir die Funktion von einer anderen Firebase-Funktion in einer anderen Sprache wie Golang aufrufen?

    – James Tan

    27. April 2019 um 19:44 Uhr

  • Was ist, wenn jemand absichtlich eine weitere Instanz einer idempotenten Cloud-Funktion erstellen möchte, indem er sie von sich selbst aufruft, um lange Prozesse in Blöcke zu verteilen, um Zeitüberschreitungen zu vermeiden?

    – Mohammed Maaz

    15. September 2020 um 23:28 Uhr

  • @MohammedMaaz Wenn Sie eine neue Frage haben, sollten Sie sie separat zusammen mit dem Code posten, der nicht wie erwartet funktioniert.

    – Doug Stevenson

    16. September 2020 um 1:05 Uhr

  • Dies funktioniert nicht, wenn Sie eine Express-Anwendung verwenden, da Express gesperrt wird, bis fetch zurückkehrt, was dazu führt, dass fetch gesperrt wird, da Express nie antwortet.

    – rnrneverdies

    20. Mai 2020 um 16:11 Uhr

  • Funktioniert hervorragend, ruft es von einem Trigger auf, um ein anderes Projekt zu aktualisieren. Express nicht verwenden.

    – Verrückter Mac

    19. November 2021 um 4:05 Uhr

  • Das ist großartig, danke! Warum haben Sie sich für die Verwendung des Compute-Metadatenservers anstelle von entschieden google-auth-library?

    – Johnny Oshika

    20. Mai 2021 um 18:36 Uhr

  • Nun, ich konnte keine Authentifizierung erhalten, mit der ich arbeiten konnte google-auth-library, aber dein Code hat perfekt funktioniert. Das einzige, was ich geändert habe, ist die Aktualisierung der URL des Metadatenservers http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=was dokumentiert ist cloud.google.com/functions/docs/securing/… und cloud.google.com/compute/docs/storing-retrieving-metadata.

    – Johnny Oshika

    20. Mai 2021 um 23:08 Uhr

  • @JohnnyOshika Ich habe das vor einer Weile geschrieben, also kann ich mich nicht genau erinnern, warum ich es so gemacht habe, anstatt es zu verwenden google-auth-library. Ich denke, mein Denkprozess war: “So funktioniert es, also lassen Sie es uns jetzt funktionieren lassen, und wir können es später besser machen.” Ich denke, mit google-auth-library wäre sicher der bevorzugte Weg, anstatt sich auf einen Endpunkt zu verlassen. Ich habe meine Antwort aktualisiert, um die neue URL aufzunehmen, danke!

    – Shea Hunter Belsky

    21. Mai 2021 um 20:13 Uhr

  • Ich habe versucht zu verwenden google-auth-library und es geht nicht mit Beispiel von Google bereitgestellt. Nach einigen Nachforschungen stellte ich fest, dass die Probe nicht korrekt ist. Ich habe eine eingereicht Ausgabe schon.

    – VCD

    8. Juli 2021 um 9:34 Uhr


  • Wie sende ich mit dieser Methode Daten an die Funktion?

    – GILO

    8. September 2021 um 12:33 Uhr

  • Wie würden Sie vorgehen, indem Sie eine andere Funktion lokal aufrufen?

    – Jeremy Walters

    25. Januar um 0:08

1015230cookie-checkAufrufen einer Cloud-Funktion von einer anderen Cloud-Funktion

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy