以下の内容はhttps://shoumoji.hatenablog.jp/entry/2021/06/07/040444より取得しました。


GCP の Cloud Functions は引数と戻り値をちゃんと書かないとハマる話

FaaSを使ってみる

タイトルが全て。

サークルの体験入部管理用に作ったBotバッチ処理をさせているが、Botのコードに無理やりgoroutineを入れてバッチ処理をさせている微妙なコードだった。 Oracle Cloudの無料枠に乗せているため、サーバの余力がなくコンテナを新たに立てるのが厳しかったので、そんな感じの無茶苦茶なコードになっていた。

サークルの先輩からIssuesが飛んできたりしてて、流石にそろそろ放置するのも忍びないのでBotの修正ついでに Cloud Functions に移行してみた。言語はGo。

6時間ぐらいハマった

色々困った部分はあったが、特にハマったのは以下の部分。

  • メインで動かす関数の引数、戻り値はイベントに応じてちゃんと設定する必要がある
  • package は main が使えない (ビルド時に main パッケージが自動追加されるらしい) ので、他の名前にする
  • メインで動かす関数は開始を大文字にする (Go で、package を分けることを考えれば妥当)

gcloud コマンドで行ったが、基本的にデプロイ時のエラーメッセージはあてにならないと思った方が良い。

エラーメッセージの内容で調べても情報は(英語であっても)基本出てこなかった。

Cloud Scheduler

バッチ処理の発火のためのスケジューラ。こっちは crontab とか書いたことあれば簡単で、ものの2, 3分あればできる。

Pub/Subで指定した時間にトピックを指定してやれば、ちゃんと Cloud Functions でトピックで発火する設定ができていれば動いてくれる。

感想

大体実行時間は3~4s/回ぐらい。一日一回のバッチ処理で、実行環境はメモリ128MBの最小サイズなので、1か月0.1円もしない。無料枠にも勿論収まるため超お手軽。

ちょうど良い FaaS 入門で面白かった。

通知Botとかも作れそうだし、最近 Discord も slash コマンドが使えるようになって、FaaS にコマンド処理を置けるようになったらしいので作ってみたい。

dev.to




以上の内容はhttps://shoumoji.hatenablog.jp/entry/2021/06/07/040444より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14