web-dev-qa-db-ja.com

別のクラウド機能からクラウド機能を呼び出す

無料のsparkティアで別のクラウド関数を呼び出すためにクラウド関数を使用しています。

別のクラウド関数を呼び出す特別な方法はありますか?または、標準の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 us-central1-functions-*****。cloudfunctions .net us-central1-functions-*****。cloudfunctions.net:443

Googleが所有しているにもかかわらず、firebaseが接続をブロックしているように聞こえるので、ロックしないでください

Sparkプランでは、Googleが所有するサービスへの送信ネットワークリクエストのみが許可されます。

クラウド機能を使用して別のクラウド機能を呼び出すにはどうすればよいですか?

25
ro-savage

まったく新しい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つの関数はまったく同じことを行いますが、エンドポイントが異なります。

17
Doug Stevenson