👋

firebase-functions を使って Cloud Functions for Firebase v2をデプロイしてみた。

2022/08/06に公開

概要

Cloud Functions (2nd gen) がGAになっていたので、firebase-functions を使ってデプロイしてみました。

※Cloud Functions for Firebase v2 はパブリックプレビューです。
https://firebase.google.com/docs/functions/beta?hl=en

前提

firebase-tools: 11.4.2
firebase-functions: 3.22.0

コード

https://firebase.google.com/docs/functions/typescript?hl=ja を基にプロジェクトを作成します。
index.ts を下記のように変更。こちらのドキュメントを参考にしています。

v1v2 で region や runtimeOptions の設定方法が変更されています。

index.ts
import * as functions from 'firebase-functions';
import * as functionsV1 from 'firebase-functions/v1';
import * as functionsV2 from 'firebase-functions/v2';

// `firebase-functions` から import したのは v1 で作成される。
export const helloWorld = functions
  .region('asia-northeast1')
  .runWith({ memory: '512MB' })
  .https.onRequest((request, response) => {
    functions.logger.info('Hello logs!', { structuredData: true });
    response.send('Hello from Firebase!');
  });

// `firebase-functions/v1` から import したのは v1 で作成される。
export const helloWorldV1 = functionsV1
  .region('asia-northeast1')
  .runWith({ memory: '512MB' })
  .https.onRequest((request, response) => {
    functionsV1.logger.info('Hello logs V1!', { structuredData: true });
    response.send('Hello from Firebase V1!');
  });

// `firebase-functions/v2` から import したのは v2 で作成される。
// function名のルールがV2とV1で変更になっている。大文字は使えなくなった。
// https://github.com/firebase/firebase-tools/blob/5ea735ec96eec1eb4d016ea447e092dadbec7481/src/deploy/functions/validate.ts#L147
export const helloworldv2 = functionsV2.https.onRequest(
  { region: 'asia-northeast1', memory: '512MiB' },
  (request, response) => {
    functionsV2.logger.info('Hello logs!', { structuredData: true });
    response.send('Hello from Firebase V2!');
  }
);

firebase deploy を実行すると、以下のような URL で作成される。
v2https://{func-revision}.a.run.app の URL になります。

Function URL (helloWorld(asia-northeast1)): https://asia-northeast1-cloudfuncions-sample-project.cloudfunctions.net/helloWorld
Function URL (helloWorldV1(asia-northeast1)): https://asia-northeast1-cloudfuncions-sample-project.cloudfunctions.net/helloWorldV1
Function URL (helloworldv2(asia-northeast1)): https://helloworldv2-qo2ofg2sqa-an.a.run.app

CloudFunctionのコンソール画面

CloudRunのコンソール画面
v2 は CloudRun 上で構築されているので、こちらにも作成されています。

参考URL

https://qiita.com/gzock/items/4ae721fad4ed09b3ba86

Discussion