Специальное задание GCP Vertex AI Training: у пользователя нет разрешения bigquery.jobs.create

Я изо всех сил пытаюсь выполнить запрос с помощью клиента Python Bigquery изнутри настраиваемой задачи обучения Vertex AI из Google Cloud Platform.

Я создал образ Docker, который содержит этот код Python, затем я отправил его в Реестр контейнеров (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, но это не сработало.

По этой ссылке https://cloud.google.com/vertex-ai/docs/general/access-control?hl=th#granting_service_agents_access_to_other_resources

управляемые Google сервисные аккаунты для AI Platform Custom Code Service Agent (Vertex AI) уже имеют право доступа к 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 *******.

Я заменил идентификатор на *******


Изменить: я пробовал несколько конфигураций, мой последний файл конфигурации YAML содержит только это

baseOutputDirectory:
  outputUriPrefix:

Использование поля serviceAccount, похоже, не изменяет фактическую конфигурацию, в отличие от параметра --service-account


Изменить 14.06.2021: Быстрое исправление

как сказал @ Ricco.D

попробуйте явно определить project_id в коде bigquery, если вы еще этого не сделали.

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

исправил мою проблему. До сих пор не знаю причин.


person Mickaël Nicolaccini    schedule 10.06.2021    source источник
comment
Вы определили учетную запись службы, которая будет использоваться в вашем файле yaml? Если возможно, вы можете отредактировать свой пост и также показать свой yaml?   -  person Ricco D    schedule 11.06.2021
comment
Использование field serviceAccount, похоже, не изменяет фактическую конфигурацию, в отличие от опции --service-account, я добавил свой файл конфигурации   -  person Mickaël Nicolaccini    schedule 11.06.2021
comment
Какие учетные записи служб вы пробовали использовать --service-account? Как пользовательская учетная запись службы, учетная запись службы по умолчанию vertex ai и т. Д.   -  person Ricco D    schedule 11.06.2021
comment
Я использовал пользовательскую учетную запись службы. Думаю, если я не упомяну об этом явно, он будет использовать сервисные аккаунты, управляемые Google, для платформы AI.   -  person Mickaël Nicolaccini    schedule 11.06.2021
comment
Создан ли используемый вами набор данных BigQuery в том же проекте, в котором вы вызываете настраиваемое задание? Для устранения неполадок можно попробовать изменить роль агент службы vertex в Editor и проверьте, будет ли он работать.   -  person Ricco D    schedule 11.06.2021
comment
Да, они оба работают в одном проекте. Я редактировал агент службы вершин, он тоже не работает: /   -  person Mickaël Nicolaccini    schedule 11.06.2021
comment
Можете ли вы попробовать явно определить project_id в коде bigquery, если вы еще этого не сделали. bigquery.Client(project=[your-project], credentials=credentials)?   -  person Ricco D    schedule 14.06.2021
comment
ну, как ни странно, установка имени проекта (project = [your-project]) устранила проблему, спасибо, но я не понимаю, зачем мне это нужно   -  person Mickaël Nicolaccini    schedule 14.06.2021
comment
Я отправлю это как ответ, чтобы это исправление было видно сообществу.   -  person Ricco D    schedule 15.06.2021


Ответы (1)


Для решения проблемы необходимо явно указать идентификатор проекта в коде Bigquery.

Пример:

bigquery.Client(project=[your-project], credentials=credentials)
person Ricco D    schedule 15.06.2021