【发布时间】:2021-08-27 22:04:45
【问题描述】:
我正在努力从 Google Cloud Platform 的 Vertex AI 训练自定义作业中使用 Bigquery python 客户端执行查询。
我已经构建了一个包含此 python 代码的 Docker 映像,然后我已将其推送到 Container Registry (eu.gcr.io)
我正在使用这个命令来部署
gcloud beta ai custom-jobs create --region=europe-west1 --display-name="$job_name" \
--config=config_custom_container.yaml \
--worker-pool-spec=machine-type=n1-standard-4,replica-count=1,container-image-uri="$docker_img_path" \
--args="${model_type},${env},${now}"
我什至尝试使用选项 --service-account 来指定具有管理员 Bigquery 角色的服务帐户,但没有成功。
AI Platform Custom Code Service Agent (Vertex AI) 的 Google 管理的服务帐户已经有权访问 BigQuery,所以我不明白为什么我的工作会因此错误而失败
google.api_core.exceptions.Forbidden: 403 POST https://bigquery.googleapis.com/bigquery/v2/projects/*******/jobs?prettyPrint=false:
Access Denied: Project *******:
User does not have bigquery.jobs.create permission in project *******.
我已将 id 替换为 *******
编辑: 我已经尝试了几个配置,我最后一个配置 YAML 文件只包含这个
baseOutputDirectory:
outputUriPrefix:
与 --service-account 选项不同,使用字段serviceAccount 似乎不会编辑实际配置
2021 年 6 月 14 日编辑:快速修复
就像@Ricco.D 所说的
尝试在您的 bigquery 代码中明确定义 project_id 还没有这样做。
bigquery.Client(project=[your-project])
解决了我的问题。我仍然不知道原因。
【问题讨论】:
-
您是否在 yaml 文件中定义了要使用的服务帐户?如果可能,您可以编辑您的帖子并显示您的 yaml 吗?
-
使用字段 serviceAccount 似乎不会编辑实际配置,不像 --service-account 选项我添加了我的配置文件
-
您使用
--service-account尝试过哪些服务帐户?比如自定义服务账号、顶点ai默认服务账号等 -
我使用了自定义服务帐号。我猜如果我不明确提及它,它将使用 Google 管理的 AI Platform 服务帐户
-
您使用的 BigQuery 数据集是否是在您调用自定义作业的同一项目中创建的?要解决问题,您可以尝试将vertex service agent 的角色更改为 Editor 并检查它是否有效。
标签: google-cloud-platform google-cloud-ml gcp-ai-platform-training