WedX - журнал о программировании и компьютерных науках

Serviceaccount не имеет разрешения bigquery.jobs.create

Разрешение, данное сервисной учетной записи, — «владелец» и «администратор 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 
  [email protected] does not have 
  bigquery.jobs.create permission in project project-xxxx." } ],
}}
04.03.2019

Ответы:


1

Вам необходимо указать учетные данные учетной записи службы в качестве параметра 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"
  1. Создайте файл учетных данных:
gcloud iam service-accounts keys create [FILE_NAME].json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
  1. Добавьте путь к этому файлу в конструктор BigQueryClient и запустите свой код.
04.03.2019
  • Где мне нужно запустить эту команду в облачной оболочке Google? 05.03.2019
  • Вы создаете конструктор, указав параметр keyFilePath в json-файле учетных данных? Также проверьте актуальность этих учетных данных на вкладке IAM & admin > Service Accounts Google Cloud Console. 05.03.2019
  • @Krunal Я отредактировал свой ответ с подробными инструкциями. 06.03.2019

  • 2

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

    07.03.2019
  • Если учетная запись службы была удалена и создана заново с тем же именем, это может привести к непредвиденному поведению. Скорее всего, поэтому создание новой учетной записи службы решило проблему. Проверьте этот cloud.google.com/iam/docs/. 13.03.2019
  • Прочитайте ответ еще раз, я упомянул, что дал такое же разрешение, я ничего не упомянул об имени. 14.03.2019
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]