Подтвердить что ты не робот

Вызов функции облака из другой облачной функции

Я использую Cloud Function для вызова другой функции облака на свободном искровом уровне.

Есть ли специальный способ вызова другой функции облака? Или вы просто используете стандартный HTTP-запрос?

Я попытался вызвать другую функцию прямо так:

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))
})

Но я получаю ошибку

FetchError: запрос https://us-central1-functions- ****. cloudfunctions.net/validate не удалось, причина: getaddrinfo ENOTFOUND нам-central1-функции - ***** cloudfunctions.net. нас-central1-функции -. ***** cloudfunctions.net:443

Похоже, что firebase блокирует соединение, несмотря на то, что он принадлежит Google, и поэтому он не должен быть заблокирован

план Spark позволяет только исходящие сетевые запросы к принадлежащему Google услуги.

Как я могу использовать Cloud Function для вызова другой функции Cloud?

4b9b3361

Ответ 1

Вам не нужно беспокоиться о вызове некоторых общих функций с помощью всего нового вызова HTTPS. Вы можете просто абстрагировать обычные биты кода в регулярную функцию javascript, которая вызывается одним из них. Например, вы можете изменить шаблон helloWorld, например:

var functions = require('firebase-functions');

exports.helloWorld = functions.https.onRequest((request, response) => {
  common(response)
})

exports.helloWorld2 = functions.https.onRequest((request, response) => {
  common(response)
})

function common(response) {
  response.send("Hello from a regular old function!");
}

Эти две функции будут делать то же самое, но с разными конечными точками.

Ответ 2

Я использую Python для облачной функции. Как вызвать функцию облака из другой функции облака, используя python. Я не могу добавить комментарий к ответу выше, так как у меня еще нет 50 репутации. Поэтому прошу это здесь