【初心者向け】Cloud Run に「停止」が無かったので、無効化と削除で対応した記録
1. はじめに:Cloud Run を「停止したい」という現場ニーズ
Cloud Monitoring のアラートを受けたあと、Cloud Run のサービスを自動で止めたいという要望がありました。 「簡単にできるでしょ」と思って設定を進めていたのですが、意外な壁にぶつかりました…😮💨
⬇️の Monitoring 設定後にハマったことを書いています。
Monitoring のアラート設定、思ったよりハマったので記録を残す
(初心者ゆえのハマりなのかもしれませんが、同じ悩みの方の助けになれば…!)
2. Cloud Run の前提:そもそも“停止”という概念がない?
Cloud Run は「リクエストが無ければ自動的にスケールが 0 に戻る」思想で作られており、
ユーザーが任意のタイミングで “停止” させる概念がそもそも存在しません。
Google のドキュメントを読んでも
「停止(Stop)」という単語が全く登場しません…💦
よく見るサービスの のような
「停止ボタン」自体が存在しない という前提からスタートする必要があります。
3. じゃあ、管理画面から停止したいときはどうするの?
管理画面(Cloud Run コンソール)を探しても、停止ボタンはありません。
代わりにドキュメントには以下の 2 つの手段が出てきます。
- ❌ 「停止(Stop)」という概念は存在しない
- ⭕ 「無効化(Disable)」
- ⭕ 「サービス削除(Delete)」
📄 参考:
Cloud Run サービスを管理する
■試したこと:「無効化」=スケーリングを0 にする
Cloud Run サービス画面 > スケーリング設定を編集

手動スケーリングで 0 に変更

サービスとして動作しない状態になったことを確認

この状態になると、
- サービス URL は Service disabled
- しかしリソース(設定・リビジョン)は残る
→ つまり「停止に近い 無効化 状態」
ただしこれは UI 特有の挙動で、
API から同じ状態を作れるのか? が疑問として残りました。
4. API では無効化できる? → はい、できます
結論として、API からも Cloud Run サービスを無効化できます。
📄 参考(公式)
Cloud Run サービスの無効化・再有効化
API では “自動スケール” ではなく、
“手動スケール(manualInstanceCount)” を操作して無効化します。
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-X PATCH \
-d '{"scaling":{"manualInstanceCount":0 }}' \
"https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE?update_mask=scaling.manualInstanceCount"
- manualInstanceCount を 0 にすると、そのサービスは 「無効化(Disable)」状態 になり、
サービス URL にアクセスしても Service disabled となります。
(ただしリソース自体は残るので、後から再有効化も可能です)
5.でも当初は勘違いしていました…💦(最大の落とし穴)
ここで一番ハマったポイントがこれでした👇
Cloud Run のスケーリング設定には、実は 2種類のパラメータ があります。
-
自動スケール用
- minInstances
- maxInstances
-
手動スケール用
- manualInstanceCount
UI 上ではこれらが 同じ画面に並んで表示される ので、
「全部同じ種類の設定」だと思いこんでしまいました。
minInstances=0 & maxInstancesをしたところ、
にすれば無効化できると思ってしまい、 逆に “無効化とは別の状態” になって大混乱…😇
「え、止まらないじゃん…?」 /「むしろ挙動が変になってない?」
結果的に API でもどう再現していいかわからず、
最終的にドキュメントにも記載があった方法「サービスごと削除」して対処しました。
あとでドキュメントを読み返して、
manualInstanceCount=0 が正式な無効化だったのか…!
と気づいた、というオチです。笑
6.まとめ
Cloud Run のドキュメントは膨大で、初心者にはかなり把握が難しいですが、
調べてみると
❌ Cloud Run に「停止(Stop)」という概念はない
⭕ 「無効化(Disable)」が停止に最も近い
⭕ API でも無効化できる(manualInstanceCount=0)
⭕ 最後の手段として「サービス削除」も有効
⭕ 削除しても Logging のログは残る
ということが分かりました。
私の場合は「URL を変えて再度デプロイする必要がある」要件だったため、
今回は削除で進めましたが、
Cloud Run には停止はないけど“無効化”という選択肢がある
という知識は今後めちゃくちゃ役に立つと思います。
Discussion