Cloud Runのコールドスタートを避けるためにcurlで起こし続ける

公開日時
更新日時

Cloud Runを利用する際にコールドスタートを避けるため、定期的にリクエストを送ってインスタンスを起こし続ける対応を行った。

同一のGCPプロジェクトで完結させるのであればCloud Schedulerを使うのが手軽だが、Cloud Schedulerの無料枠がアカウント単位で3つまでとなっている。

個人プロジェクトなこともありコストを抑えたかったので、自宅のRaspberry Piからcronでcurlを実行することにした。

↓のように平日(月~金)の7時~20時まで1分おきにCloud Runにリクエストを送るようにした。

* 7-20 * * 1-5 bash -lc '/usr/bin/curl -s "https://example.a.run.app/" -o /dev/null'

Cloud Runのログを確認したところ、定期リクエストを送っている間はコールドスタートは発生していないことが確認できた。


Related #gcp

Cloud FunctionsのNode.jsバージョンを更新する

package.jsonとcloudbuild.yamlを更新

Cloud BuildでFirebase Hostingのデプロイを行う

リポジトリへのpush以外をトリガーにしたい場合に使用

Firebase HostingのデプロイをWebhook(API)経由で行う

デプロイボタンが作れるようになった

CloudRunでnode.jsを動かす

リポジトリにpushしたらCloudRun上に自動デプロイ

IPv6 IPoE環境で自宅のRaspberryPiにsshできるようにする

GCPにssh port forwardingすることで実現できた