🕌

Cloud Scheduler から Cloud Run の エンドポイントを POST する方法

2021/11/12に公開

Cloud Schedulerとは

Google Cloudが提供するCronサービスです。(雑)
Google Cloudで定期的になんかやりたいと思ったら、こやつを使うことを検討するんじゃないでしょうか。
安いし。

でも、情報が充実してない(執筆時現在)ですよね。
HTTPでCloudRunのエンドポイント呼ぶだけで地味に疲れました。
なので、やり方を残しておこうと思います。

Cloud Run でAPIサーバを建てる

この時、トリガーを「すべてのトラフィックを許可する」を選択しないと上手くいかなかった。

サービスアカウントを作成する

サービスアカウントを新規作成して、ロールに「CloudRun 起動元」を付与しておく。

Cloud Schedulerのジョブを作成する

ジョブ作成時の「スケジュールを定義する」は特に躓かないだろう。
問題は「実行内容を構成する」のところ。私は結構ハマった。

記述の方法は画像の通り。
サービスアカウントには、ロールに「CloudRun 起動元」を付与したやつを指定する。

注意したいのは本文のところ。
ここにはどうやら文字列しか置けないらしく、数値の指定はどうやってもエラーになった。

※本文の指定は正しくは {"key":"value"} となります。

感想

他にいい感じにできる方法知ってる方は是非教えてください。

参考

https://cloud.google.com/scheduler/docs/quickstart
https://cloud.google.com/run/docs/triggering/using-scheduler#console

Discussion