Cloud Functions for Firebaseで困ったところ

2018年11月29日

Realtime Database トリガーを使うことが多いと思いますが、AWS Lambdaのようにhttpリクエスト関数を定義してWebAPIを簡単に作成できるのも便利です。

今回は少し触って困ったところをまとめたいと思います。

外部のWebAPIを呼び出そうとすると「getaddrinfo ENOTFOUND」というエラーが帰ってくる。

https://stackoverflow.com/questions/42774807/cloud-functions-for-firebase-getaddrinfo-enotfound

You’ll need to be on a paid plan to make external API requests.

Firebase’s Blaze plan (pay as you go) has a free allotment for Cloud Functions. https://firebase.google.com/pricing/

無料プラン(Sparkプラン)では外部のWebサービスの呼び出しができないようです。

FlameプランかBlazeプランに切り替えましょう。

 

deploy先を管理・変更する方法

複数プロジェクトを管理する場合は.firebasercファイルを編集します。

{
  "projects": {
    "default": "project-id"
  }
}

環境を指定せずにdeployするだけならこれでいいですがプロジェクトが複数ある場合はdefaultではなくkeyを設定します。

{
  "projects": {
    "production": "project-id",
    "staging": "staging-project-id"
  }
}

deployする時に向き先を指定しましょう。

$ firebase use staging
$ firebase deploy

 

index.jsから関数を削除したが、残っている

一度デプロイした関数をindex.jsから削除し、deployしなおすと削除するかどうか聞かれて実行すると削除が走っているように見えます。

しかしコンソールで確認すると残ってしまっていることがあると思います。

https://firebase.google.com/docs/functions/manage-functions?hl=ja#delete_functions

暗黙的に関数を削除する方法では、firebase deploy により index.js が解析され、ファイルから削除されたすべての関数が本番環境から削除されます。非対話モードでデプロイすることで関数を削除することはできません。

Cloud Functions シェルで実行した状態でないと消えないようです。

https://firebase.google.com/docs/functions/local-emulator?hl=ja#install_and_configure_the_cloud_functions_shell

もしくはfunctions:deleteで明示的に削除しましょう。

この記事を書いた人

tatsuya_jinmon

tatsuya_jinmon

関連記事

おすすめの記事