Open5
[Scrap] Dart で GCP Cloud Functions を書いてみる
背景
作ろうとしているアプリの要件的にバックエンドを Dart で書くのが一番良さそうだったので、GCP Cloud Functions (以下 CFs) を Dart で書くことに入門する。
知りたいところ
- 開発手順
- 開発方法
- CFs の追加、編集手順
- デプロイ方法
- GCP CFs でどこまでできるのか
- Callable 以外にも定期実行処理などを実装できるのか
やること
以下の動画に沿って入門して、足りないところがあれば追加で調査する。
作業ログ
実際にやったことを書いていきます。
作業ログ
動画で紹介されていないものには * をつけてます。
- gcloud の SDK をインストールした
- 任意の ディレクトリを作成して
dartfn
コマンドでボイラープレート作成 - *Firebase からプロジェクトを作成した
- *GCP で Billing Account を追加してクレカを登録した
- *BillingAccount の予算アラートを有効にした
- *上記で作成したプロジェクトに BillingAccount を紐付けた
- *CloudFunctions のセクションに "ACTIVATE BILLING" ボタンが表示されてます
-
gcloud auth login
した後 deploy した -
barcode_image
package を追加 - QR コード画像を作成する処理を書いた
- クエリパラメータを使えるようにしたり
- エラーのステータスコードを返したり
dartfn 0.4.4
GCP 製で、Dart で GCP の開発用のボイラープレートを生成できるコマンドラインツール。Makefile, Dockerfile を用意してくれてるのが好印象だった。
make run
で CFs が localhost で立ち上がって動作確認できるのが最高。
CFs の開発方法
CFs の見た目
CloudFunction アノテーションの引数として、デプロイしたい CFs の名前を指定します。
(target: 'hello-world')
Response helloWorld(Request request) {
// queryParameter を取り出すこともできる。
final params = request.url.queryParameters;
// Response を返却する必要がある。
return Response.ok('Hello, world!');
}
CFs を追加する時の手順
- 関数を一つだけ含むファイルを作成する
もっと良いいやり方があるかもしれないです。
()
Response function(Request request) {
// 何らかの処理
return Response.ok('Sucess');
}
- ローカルテスト用にコード生成
新規で CFs を追加した場合は、ローカルテスト用のserver.dart
を更新する必要があるので、コード生成を走らせます。
$ dart run build_runner build
- ローカルでの動作確認
Makefile が用意されているので、以下のコマンドを実行します。
$ make run FUNCTION_TARGET=function-name
- gcloud でデプロイ
デプロイする際はgcloud
コマンドでデプロイします。(以下は一例なので適宜変更してください)
$ gcloud run deploy dartcloudfn --allow-unauthenticated --source=.