Google Cloud Scheduler调度Vertex AI流水线运行失败问题咨询
错误原因
你的报错返回404 NOT_FOUND,是因为你代码中注释使用的废弃API AIPlatformClient.create_schedule_from_job_spec 依赖GCP自动创建的名为templated_http_request-v1的Cloud Function,该函数没有被正常部署,导致Cloud Scheduler触发时找不到目标地址,不需要你手动创建对应URL。
解决方案
- 优先使用新版Vertex AI SDK内置的流水线定时功能,弃用已被废弃的
kfp.v2.google.client.AIPlatformClient相关API,新版功能不需要依赖额外的Cloud Function,修改后的代码参考如下:
# 之前的流水线定义、编译代码保持不变 compiler.Compiler().compile( pipeline_func=pipeline, package_path=COMPILED_PIPELINE_PATH, ) # 创建PipelineJob实例 job = aip.PipelineJob( display_name=DISPLAY_NAME, template_path=COMPILED_PIPELINE_PATH, pipeline_root=PIPELINE_ROOT, ) # 直接创建定时任务,不需要额外部署组件 job.create_schedule( display_name=f"{DISPLAY_NAME}-daily-schedule", cron=SCHEDULE, service_account=SERVICE_ACCOUNT )
- 运行代码前先确认项目已经启用以下必要API:Vertex AI API、Cloud Scheduler API、Cloud Storage API、IAM API
- 确认你使用的服务账号具备以下权限,避免运行时权限报错:
- Vertex AI 流水线运行者 (
roles/aiplatform.pipelineRunner) - Cloud Scheduler 作业管理员 (
roles/cloudscheduler.jobAdmin) - 存储对象管理员 (
roles/storage.objectAdmin) (权限范围覆盖你流水线用到的GCS存储桶)
- Vertex AI 流水线运行者 (
- 如果之前已经在Cloud Scheduler中创建了失败的定时任务,先手动删除旧任务,再重新运行代码创建新的定时,避免资源冲突。
注意:你代码中设置本地凭据的两行仅在本地运行notebook时生效,流水线定时运行在GCP托管环境中,不会读取该本地路径,不会影响定时任务的运行。
内容的提问来源于stack exchange,提问作者Marco Abbatangelo
相关产品推荐
相关产品推荐

