GCP Vertex AI 训练自定义作业:用户没有 bigquery.jobs.create 权限

GCP Vertex AI Training Custom Job : User does not have bigquery.jobs.create permission

我正在努力从 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 来指定一个具有 admin Bigquery 角色的服务帐户,但它没有用。

据此link https://cloud.google.com/vertex-ai/docs/general/access-control?hl=th#granting_service_agents_access_to_other_resources

AI Platform Custom Code Service Agent (Vertex AI) 的 Google-managed 服务帐户已经有权访问 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:

使用字段 serviceAccount 似乎不会像 --service-account 选项那样编辑实际配置


编辑 14-06-2021:快速修复

喜欢@Ricco.D 说

try explicitly defining the project_id in your bigquery code if you have not done this yet.

bigquery.Client(project=[your-project])

解决了我的问题。我还不知道原因。

要解决此问题,需要在 Bigquery 代码中明确指定项目 ID。

示例:

bigquery.Client(project=[your-project], credentials=credentials)