Не удается загрузить на Google Диск в области подключения с несколькими потоками GCP

#google-api #google-drive-api #airflow #google-api-python-client #service-accounts

#google-api #google-drive-api #воздушный поток #google-api-python-client #сервис-учетные записи

Вопрос:

Я создаю DAG, который в конце будет загружать файлы на Google Диск, используя Airflow GoogleDriveHook . Поскольку это выполняется с использованием учетной записи службы, я использую свой адрес электронной почты в качестве delegate_to параметра и заранее включил делегирование по всему домену. Область действия для электронной почты https://www.googleapis.com/auth/drive.file .

Однако, поскольку я использую одно и то же подключение Airflow для других групп баз данных, использующих другие службы GCP, мне пришлось бы использовать несколько областей для этого вышеупомянутого соединения.

По какой-то причине во время загрузки в нескольких областях произошел сбой, извергающий:

 google.auth.exceptions.RefreshError: ('unauthorized_client: Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested.', '{n  "error": "unauthorized_client",n  "error_description": "Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested."n}')
  

Хотя наличие нескольких подключений к воздушным потокам не сильно мешает, я думаю, на данный момент мне просто любопытно, почему это происходит (воздушный поток 1.10.9)?

Комментарии:

1. Содержат ли используемые вами учетные данные обновленные области? @GregoriusAriaNeruda

2.@ale13 Я не совсем уверен, что вы подразумеваете под «учетными данными, содержащими обновленные области». Должен ли файл JSON учетной записи службы содержать обновленную область? Если вы имели в виду google.auth.credentials.Credentials , AFAIK GoogleDriveHook уже должен выполнить эту работу, и, как я уже сказал, загрузка файлов завершается успешно, если область в подключении Airflow только https://www.googleapis.com/auth/drive.file . Любое дополнение к этому просто завершится неудачей.

Ответ №1:

Я использую свой адрес электронной почты в качестве параметра delegate_to

  1. Вы использовали адрес электронной почты домена gsuite?
  2. Вы настроили делегирование домена в GSuite?

Делегирование работает только с электронными письмами домена Gsuite.

Если вы хотите, чтобы учетная запись службы могла получить доступ к вашей личной учетной записи Google, отличной от g suite. Затем вам нужно будет предоставить общий доступ к каталогу в вашей учетной записи persona drive и предоставить учетной записи службы доступ к этому каталогу, как и любому другому пользователю, предоставив ей общий доступ к каталогу.

После загрузки файлов они будут принадлежать учетной записи службы, после чего вам необходимо будет указать разрешения для этого файла, чтобы ваша личная учетная запись имела доступ к файлам.

Комментарии:

1. 1. Да 2. Да Проблема, с которой я сталкиваюсь, заключается в том, что не удается загрузить, когда у меня есть несколько областей в моем подключении к воздушному потоку.