👋
firebase-functions を使って Cloud Functions for Firebase v2をデプロイしてみた。
概要
Cloud Functions (2nd gen) がGAになっていたので、firebase-functions を使ってデプロイしてみました。
※Cloud Functions for Firebase v2 はパブリックプレビューです。
前提
firebase-tools: 11.4.2
firebase-functions: 3.22.0
コード
https://firebase.google.com/docs/functions/typescript?hl=ja を基にプロジェクトを作成します。
index.ts
を下記のように変更。こちらのドキュメントを参考にしています。
v1
と v2
で 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 で作成される。
v2
は https://{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
Discussion