Używam funkcji chmury do wywoływania innej funkcji chmury na wolnej warstwie iskier.Wywołanie funkcji chmury z innej funkcji chmurowej
Czy istnieje specjalny sposób wywoływania innej funkcji chmury? A może używasz standardowego żądania http?
Próbowałem wywołanie innej funkcji bezpośrednio tak:
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))
})
Ale pojawia się błąd
FetchError: request to https://us-central1-functions- ****.cloudfunctions.net/validate failed, reason: getaddrinfo ENOTFOUND us-central1-functions-*****.cloudfunctions.net us-central1-functions-*****.cloudfunctions.net:443
co brzmi jak Firebase blokuje połączenia, mimo że jest to google własnością, i dlatego nie należy go blokować:
the Spark plan only allows outbound network requests to Google owned services.
Jak mogę skorzystać z Cloud Func do połączenia się z inną funkcją chmury?
Jeśli z jakiegoś powodu potrzebujesz funkcji "stopniowanych" (powiedz, że wykonujesz serię żądań HTTP stron trzecich). Proponuję opublikowanie w [Cloud Pub/Sub] (https://github.com/GoogleCloudPlatform/google-cloud-node#cloud-pubsub-alpha), które może asynchronicznie wywołać funkcję [Cloud Pub/Sub] (https: //firebase.google.com/docs/functions/pubsub-events). Wyzwalacze HTTP są zsynchronizowane, mają limit czasu i nie są "trwałe". –
Dzięki Doug. To odpowiada na moje pierwsze i główne pytanie. Czy możesz mi powiedzieć, dlaczego nie mogłem wykonać połączenia http do * .cloudfunctions.net? Powodem, dla którego zostałem nazwany inną funkcją chmury, było symulowanie zewnętrznego wywołania API do API hostowanego w usłudze innej niż google. –
* .cloudfunctions.net nie znajduje się obecnie na białej liście dla dostępu do sieci w darmowej warstwie Spark. Ogólnie rzecz biorąc, stosowanie białej listy ma na celu zapobieganie przypadkowemu wykorzystywaniu usług innych niż google i możesz myśleć o * .cloudfunctions.net jako o usługach innych niż google (ponieważ programiści tacy jak ty faktycznie udostępniają tę całą przestrzeń, aby zapewnić własną). –