You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:gcloud停止App Engine当前版本方法及脚本自动启停方案

嘿,我来帮你搞定这两个App Engine运维的实用场景问题:

一、停止当前承载100%流量版本的推荐方法

官方最推荐的方式就是使用gcloud app versions stop命令,但要避免手动查版本号的麻烦,核心是利用gcloud的过滤+格式化输出能力,自动定位到承载全部流量的版本,完全不用去控制台翻找。

二、Bash脚本自动启停的实现方案

下面给你两个现成的脚本,分别对应你的两个需求,你可以直接用或者根据自己的服务配置调整:

1. 自动停止承载100%流量的版本

这个脚本会自动定位目标服务(默认是default服务,可按需修改)里承载全部流量的版本,然后执行停止操作:

#!/bin/bash

# 配置你的App Engine服务名,默认是default
SERVICE_NAME="default"

# 提取承载100%流量的版本ID
TRAFFIC_VERSION=$(gcloud app versions list --service="$SERVICE_NAME" --filter="traffic_split=1.0" --format='value(id)')

if [ -n "$TRAFFIC_VERSION" ]; then
  echo "✅ 找到承载100%流量的版本: $TRAFFIC_VERSION,开始停止..."
  gcloud app versions stop "$TRAFFIC_VERSION" --service="$SERVICE_NAME"
  echo "✅ 版本$TRAFFIC_VERSION已成功停止"
else
  echo "❌ 未找到承载100%流量的版本,请检查服务配置"
  exit 1
fi

关键细节:

  • --filter="traffic_split=1.0":精准过滤出流量占比100%的版本
  • --format='value(id)':只输出版本ID,方便直接作为参数传入停止命令
  • 如果你的App Engine有多个服务,修改SERVICE_NAME变量即可适配

2. 自动启动最近部署的版本

这个脚本会按部署时间倒序排序,找到最新部署的版本并启动,还可选自动把流量切换到该版本:

#!/bin/bash

# 配置你的App Engine服务名
SERVICE_NAME="default"

# 提取最新部署的版本ID(按创建时间倒序,取第一个)
LATEST_VERSION=$(gcloud app versions list --service="$SERVICE_NAME" --sort-by="~createTime" --limit=1 --format='value(id)')

if [ -n "$LATEST_VERSION" ]; then
  echo "✅ 找到最近部署的版本: $LATEST_VERSION,开始启动..."
  gcloud app versions start "$LATEST_VERSION" --service="$SERVICE_NAME"
  
  # 可选:如果需要把100%流量切到这个新版本,取消下面两行的注释
  # echo "✅ 正在将流量切换到版本$LATEST_VERSION..."
  # gcloud app services set-traffic "$SERVICE_NAME" --splits="$LATEST_VERSION=1.0"
  
  echo "✅ 版本$LATEST_VERSION已成功启动"
else
  echo "❌ 未找到任何已部署的版本,请检查服务状态"
  exit 1
fi

关键细节:

  • --sort-by="~createTime":~表示倒序排列,最新部署的版本会排在最前面
  • --limit=1:只取第一个结果,也就是最新的版本
  • 若需要启动后直接让新版本接管全部流量,取消set-traffic命令的注释即可
额外注意事项
  • 运行脚本前,确保已经通过gcloud auth login完成身份验证,并且用gcloud config set project YOUR_PROJECT_ID设置了正确的项目
  • 如果你需要同时操作多个服务,可以把服务名改成脚本参数,比如./start-latest.sh my-service,然后在脚本里用SERVICE_NAME=$1获取输入值
  • 担心误操作的话,可以在停止版本前加个确认步骤,比如read -p "确定要停止版本$TRAFFIC_VERSION吗?(y/N) " CONFIRM,确认后再执行停止命令

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:55:32