目次Category
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 シェルで実行した状態でないと消えないようです。
もしくはfunctions:deleteで明示的に削除しましょう。