GAE/Go の cron を毎時同じ時刻に起動させるための synchronized の設定

ちょっとハマったので書いておく。
結論から言うと、synchronized を設定すればいい。

GAE の cron は yaml で設定する。
https://cloud.google.com/appengine/docs/standard/go/config/cronref

今回は「30分ごとに起動する」という設定をしたかったので、以下のように書いた。

every 30 minutes

こう書けば、 00:00 -> 00:30 -> 01:00 のように30分おきに実行されるはずなのだが、
実行されない。

30分間隔で起動するだけで、
00:00 -> 00:30 -> 01:00 のように毎時30分間隔で起動してくれるわけではなかった。

例えば、00:10 にGCP コンソール上で手動で cron を起動すると、
次に起動するのは30分後の 00:40 になってしまう。

00:00 -> 00:30 -> 01:00 のように毎時30分間隔で起動するには
synchronized を設定する必要がある。

every 30 minutes synchronized

https://cloud.google.com/appengine/docs/standard/go/config/cronref#schedule_format

これで00:00 -> 00:30 -> 01:00 のように毎時30分間隔で起動するようになる。
00:10 にGCP コンソール上で手動で cron を起動したとしても、
次は 00:30 に起動してくれる。

ちなみに、from を設定すれば、特定の時間範囲も設定できる。

every 2 hours from 10:00 to 14:00