Serviceaccount не имеет разрешения bigquery.jobs.create - PullRequest
0 голосов
/ 04 марта 2019

Разрешение, предоставленное учетной записи службы, является "владельцем" и "администратором bigquery".

$bigQuery = new BigQueryClient([
            'projectId' => 'project-xxx',
        ]);

      $query = "SELECT * FROM `project-xxxx.analytics_xxx.events_xxx` where event_name='first_open' LIMIT 100";

        $jobConfig = $bigQuery->query($query);
        $queryResults = $bigQuery->runQuery($jobConfig);
        print_r($queryResults);

, когда я пытаюсь выполнить приведенный выше код, его ошибка отображается ниже:

{ "error": 
{ "errors": [ { "domain": "global", "reason": "accessDenied", 
  "message": "Access Denied: Project project-xxxx: The user 
  projectbigquery@project-xxxx.iam.gserviceaccount.com does not have 
  bigquery.jobs.create permission in project project-xxxx." } ],
}}

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

После создания новой учетной записи службы с тем же разрешением, что и у предыдущей учетной записи, она работает.Я не знаю, что не так с предыдущим аккаунтом.Может быть проблема с учетной записью службы.

0 голосов
/ 04 марта 2019

Необходимо указать учетные данные учетной записи службы в качестве параметра конструктора BigQueryClient .

Это можно сделать с помощью параметра keyFilePath:

$bigQuery = new BigQueryClient([
            'projectId' => 'project-xxx',
            'keyFilePath' => '/path/to/file.json'   
        ]);

Также проверьте с помощью этой команды, что вы предоставили разрешения учетной записи службы:

gcloud projects get-iam-policy yourProjectID

РЕДАКТИРОВАТЬ:

Давайте рассмотрим другой подход: создание учетной записи службы и предоставление ей разрешений с нуля.

  1. Создать новую учетную запись службы:

    gcloud iam service-accounts create [NAME]

  2. Предоставить разрешения:

gcloud projects add-iam-policy-binding [PROJECT_ID] --member "serviceAccount:[NAME]@[PROJECT_ID].iam.gserviceaccount.com" --role "roles/bigquery.admin"
Создать файл учетных данных:
gcloud iam service-accounts keys create [FILE_NAME].json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
Добавьте путь к этому файлу в конструктор BigQueryClient и запустите ваш код.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...