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

如何通过Python谷歌云库在Cloud Function中重启Managed Instance Group实例

实现方案

核心思路

直接调用Compute Engine API提供的托管实例组滚动重启接口实现,和gcloud命令底层调用的是同一套接口,支持自定义最大不可用实例数等参数,避免业务中断。

完整代码实现

import googleapiclient.discovery

def restart_mig_instances(request):
    # 配置参数,可根据实际情况修改或者通过请求参数传入
    PROJECT_ID = "你的项目ID"
    # 二选一:如果是区域级MIG填REGION,可用级填ZONE,不要同时填
    ZONE = "你的MIG所在可用区,例如us-central1-a"
    # REGION = "你的MIG所在区域,例如us-central1"
    MIG_NAME = "你的托管实例组名称"
    MAX_UNAVAILABLE = "1" # 可自定义,支持数字或者百分比,例如20%
    
    # 初始化compute客户端
    compute = googleapiclient.discovery.build('compute', 'v1')
    
    # 构造重启请求体
    request_body = {
        "maxUnavailable": MAX_UNAVAILABLE
    }
    
    # 根据MIG的类型(可用区/区域)调用对应接口
    if 'ZONE' in locals():
        operation = compute.instanceGroupManagers().rollingRestart(
            project=PROJECT_ID,
            zone=ZONE,
            instanceGroupManager=MIG_NAME,
            body=request_body
        ).execute()
    else:
        operation = compute.regionInstanceGroupManagers().rollingRestart(
            project=PROJECT_ID,
            region=REGION,
            instanceGroupManager=MIG_NAME,
            body=request_body
        ).execute()
    
    # 可根据需求选择等待操作完成,或者直接返回操作ID
    return f"重启任务已触发,操作ID: {operation['name']}"

依赖配置

你现有的requirements.txt配置无需调整,直接复用即可:

google-api-python-client==2.31.0
google-auth==2.3.3
google-auth-httplib2==0.1.0

必要权限配置

需要给Cloud Function绑定的服务账号授予以下权限之一:

  • 细粒度权限:compute.instanceGroupManagers.update
  • 预定义角色:roles/compute.instanceAdmin.v1

注意事项

  • 滚动重启过程中MIG会按照你配置的maxUnavailable参数分批重启实例,不会同时下线所有实例
  • 如果你需要等重启全部完成再返回,可以加入轮询操作状态的逻辑,调用zoneOperations.get或者regionOperations.get接口查询任务进度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:24:00