🙌

【初心者向け】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