Google Cloud Platform - использовать несколько учетных записей служб - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь использовать bq cli для экспорта данных с помощью большого запроса в GCS. В настоящее время есть два проекта, и каждый проект имеет свою учетную запись службы. Я аутентифицировал сервисную учетную запись, используя gcloud auth active-service-account, передав ключ json file. Во время выполнения своих заданий я явно настраиваю проект и учетную запись, используя следующие команды

В пределах JOB1

gcloud config set account account1

gcloud config set project project1

bq extract --destination_format NEWLINE_DELIMITED_ JSON table1 gs: // path1

В пределах JOB2

gcloud config настроить учетную запись2

gcloud config set project project2

bq extract --destination_format NEWLINE_DELIMITED_ JSON table2 gs: // path2

Когда и job1, и job2 работают параллельно, JOB1 завершается с ошибкой Учетная запись ошибки2 не имеет доступа к проекту1 и аналогичным образом в некоторых случаях происходит сбой JOB2 с ошибкой учетная запись1 не имеет доступа к проекту2. Мы определили, что это происходит, потому что, когда мы устанавливаем учетную запись, она меняет учетную запись по умолчанию на сервере (а не в сеансе) и, следовательно, другое задание, которое выполняется параллельно, завершается ошибкой. Подскажите, пожалуйста, как мы можем выполнять команды bq, используя несколько учетных записей служб на одном сервере

1 Ответ

0 голосов
/ 15 апреля 2020

Позвольте мне объяснить процесс, прежде чем углубляться в решение. Когда вы выполняете операцию над BigQuery, большую часть времени это асинхронная операция. Кли позволяет вам думать, что это синхронно, но не.

Кли выполняет это

  • Запустите работу и получите jobId
  • L oop получить статус jobId регулярно
  • Печать результата задания в конце (состояние Готово, Ошибка)

Если вы измените свои учетные данные, CLI не сможет выполнить извлечение L oop, поскольку больше не разрешается проверять этот JobId в проекте.

Теперь у вас есть 2 решения:

  • Результат работы важен для вас в кли, вы не можете изменить учетные данные. Извлечение должно быть последовательным
  • Результат задания не импортирован, вы предпочитаете параллелизм, вы можете использовать параметр --nosynchronous_mode при выполнении извлечения

Примечание: Я совершенно уверен, что если вы используете несколько пользователей и SUDO Commande, вы можете достичь того, что вы хотите в режиме Syn c. Однако я не эксперт по linux и не могу помочь с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...