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

能否通过GCP Cloud Function启动Vertex AI Workbench托管笔记本中的指定.py文件?

在GCP中通过Cloud Function触发Vertex AI Workbench笔记本内脚本的可行方案

是的,完全可以实现,以下是几种实用的方案:

方案一:基于GCE API控制实例并远程执行脚本

Vertex AI Workbench托管笔记本本质是GCE实例,所以可以通过Cloud Function调用GCE API完成操作:

  • 第一步:在Cloud Function中检查目标笔记本实例的运行状态,如果实例未启动,先调用API启动它
  • 第二步:实例启动后,通过gcloud compute ssh命令远程执行指定的.py文件(需要给Cloud Function的服务账号配置对应权限)
  • 示例Python代码片段(Cloud Function中使用):
    import subprocess
    import googleapiclient.discovery
    
    def trigger_notebook_script(request):
        # 初始化GCE客户端
        compute = googleapiclient.discovery.build('compute', 'v1')
        project = '你的项目ID'
        zone = '实例所在区域'
        instance_name = '目标笔记本实例名称'
        
        # 检查实例状态
        instance = compute.instances().get(project=project, zone=zone, instance=instance_name).execute()
        if instance['status'] != 'RUNNING':
            # 启动实例
            compute.instances().start(project=project, zone=zone, instance=instance_name).execute()
        
        # 远程执行脚本(需确保服务账号有SSH权限)
        subprocess.run([
            'gcloud', 'compute', 'ssh', instance_name,
            '--zone', zone,
            '--command', 'cd /脚本所在目录 && python3 目标脚本.py'
        ])
        return '脚本已触发执行'
    
  • 注意:要给Cloud Function的服务账号分配Compute Instance Admin和Service Account User权限,确保能操作实例并执行SSH命令

方案二:迁移脚本到Vertex AI自定义作业(推荐)

如果不需要在笔记本实例内运行脚本,更推荐把.py脚本封装成Vertex AI自定义作业,直接在Cloud Function中调用API触发:

  • 先把脚本上传到Cloud Storage
  • 在Cloud Function中调用Vertex AI API创建自定义作业,指定脚本路径和运行环境
  • 示例代码片段:
    import googleapiclient.discovery
    
    def trigger_vertex_job(request):
        ai_platform = googleapiclient.discovery.build('aiplatform', 'v1')
        project = '你的项目ID'
        location = '你的区域'
        job_display_name = '触发的脚本作业'
        gcs_script_path = 'gs://你的存储桶/脚本路径/目标脚本.py'
        
        job_body = {
            'displayName': job_display_name,
            'jobSpec': {
                'workerPoolSpecs': [{
                    'machineSpec': {
                        'machineType': 'n1-standard-1'
                    },
                    'replicaCount': 1,
                    'pythonPackageSpec': {
                        'executorImageUri': 'us-docker.pkg.dev/vertex-ai/training/scikit-learn-cpu.0-23:latest',
                        'packageUris': [],
                        'pythonModule': '目标脚本',
                        'args': [],
                        'baseOutputDirectory': {
                            'outputUriPrefix': 'gs://你的存储桶/输出目录'
                        }
                    }
                }]
            }
        }
        
        parent = f'projects/{project}/locations/{location}'
        response = ai_platform.projects().locations().customJobs().create(parent=parent, body=job_body).execute()
        return f"作业已触发:{response['name']}"
    
  • 这种方式无需维护笔记本实例的运行状态,更符合GCP的云原生架构,可靠性和可扩展性更好

方案三:利用实例启动脚本自动执行

如果只需要在实例启动时自动运行脚本,可以给笔记本实例配置自定义启动脚本:

  • 在笔记本实例的元数据中添加startup-script,内容为执行目标.py文件的命令
  • Cloud Function只需负责启动实例,实例启动后会自动运行脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:20:16