Если вы присвоили различные разрешения одной и той же учетной записи службы, которую вы указали с помощью --service-account
, проблема заключается в том, что вы, вероятно, хотели указать - impersonate-service-account .
Здесь есть три идентификатора, которые имеют отношение к данному вопросу:
- Идентификатор, выполняющий команду CreateCluster - это часто человеческая идентификация, но если вы автоматизируете вещи, используя
--impersonate-service-account
или при запуске команды из другой виртуальной машины GCE, это может быть сама учетная запись службы. - Идентификатор «Уровень управления» - это то, что серверная служба Datapro c использует для фактического создания виртуальных машин
Как правило, # 1 и # 2 нужны различные разрешения на «вычисления» и некоторые минимальные GCS разрешения. # 3 обычно требуется только GCS и опционально BigQuery, Cloud SQL, Bigtable и др. c. разрешения в зависимости от того, что вы на самом деле обрабатываете.
См. https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals для более подробного объяснения этих идентичностей.
В нем также перечислены ранее существующие курированные роли, чтобы все это было легко (и, как правило, настройки проекта «по умолчанию» автоматически будут иметь правильные роли, так что вам не придется об этом беспокоиться). По сути, «человеческая идентификация» или учетная запись службы, которую вы используете с --impersonate-service-account
, нуждается в Dataproc Editor
или Project Editor
ролях, «идентификация плоскости управления» требует Dataproc Service Agent
, а «идентификация плоскости данных» требует Dataproc Worker
.