LoginSignup
1
0

More than 1 year has passed since last update.

FirebaseCloudFunctionsの構築→デプロイメモ(2021年2月現在)

Last updated at Posted at 2021-02-24

概要

2021年2月現在、Firebase Cloud Functions で API を作る方法、ググっても出るけどセキュリティ周りの関係でちゃんと使えるようになるまでが若干面倒だったのでメモ程度にまとめておく。(Firebase 自体の使い方がわかっている前提)

※ Firebase の Spark プラン(無料版)では Cloud Functions は利用できない

手順

  1. 任意のディレクトリで firebase init でコンソール内の指示に従って初期化
  2. package.jsonengines.node から node バージョンを指定 (Node.js 8 は現在非推奨)
  3. ./functions/index.js を編集
  4. firebase serve --only functions でローカルで検証 (URLが表示される)
  5. Cloud Build API を有効化しておく
  6. firebase deploy --only functions:関数名 でデプロイ (長い)
  7. この記事 の通りに Functions に権限を付与
  8. 4番で表示されたURLにアクセスすれば完了
  9. 以降の変更は3, 4番を繰り返せばOK

URLが表示されない場合は下記にアクセス。(リージョン名はデフォルトが us-central1?)

ローカル: http://localhost:5000/[プロジェクトID]/[リージョン名]/[関数名]
本番: https://[リージョン名]-[プロジェクトID].cloudfunctions.net/[関数名]

TIPS

プリインストールされているパッケージ

ffmpeg とか imagemagic とか入ってて良い。

クラウド機能に含まれるシステムパッケージ

nodeバージョンの変更方法について

package.json
  "engines": {
    "node": "10"
  }

スクリプトの書き方について

const functions = require('firebase-functions');
const cors = require('cors')({origin: true});

// TODO: 好きな関数名を設定する
exports.関数名 = functions.https.onRequest((request, response) => {
  // TODO: CORS対策
  cors(request, response, () => {
    // TODO: 特定のHTTPメソッドのみを受け入れる
    if (request.method !== 'POST') {
      response.send('This is not post request.')
      return
    }

    // TODO: ログ出力を行う
    functions.logger.log("This is debug log.");

    // TODO: GETクエリを取得する
    const query = request.query;
    const param1 = query.param1;
    
    // TODO: POSTリクエストを取得する
    const body = request.body;
    const param2 = body.param2;

    // TODO: JSONを返す
    const json = {};
    response.status(200).json(json);
  })
});

// TODO: 複数の関数を定義する
// TODO: https://firebase.google.com/docs/functions/organize-functions?hl=ja
exports.関数名2 = functions.https.onRequest((request, response) => {
});

まとめ

CloudFunctions 自体の詳しい説明はググるといっぱい出るのでそちらを参考にするかと思い、こちらの記事はあくまでメモ的な形で利用していただけると嬉しいです。ちなみに自分は CloudFunctions + GmailAPI でお問い合わせページを作りました、便利ですね。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0