#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
, AFAIKGoogleDriveHook
уже должен выполнить эту работу, и, как я уже сказал, загрузка файлов завершается успешно, если область в подключении Airflow толькоhttps://www.googleapis.com/auth/drive.file
. Любое дополнение к этому просто завершится неудачей.
Ответ №1:
Я использую свой адрес электронной почты в качестве параметра delegate_to
- Вы использовали адрес электронной почты домена gsuite?
- Вы настроили делегирование домена в GSuite?
Делегирование работает только с электронными письмами домена Gsuite.
Если вы хотите, чтобы учетная запись службы могла получить доступ к вашей личной учетной записи Google, отличной от g suite. Затем вам нужно будет предоставить общий доступ к каталогу в вашей учетной записи persona drive и предоставить учетной записи службы доступ к этому каталогу, как и любому другому пользователю, предоставив ей общий доступ к каталогу.
После загрузки файлов они будут принадлежать учетной записи службы, после чего вам необходимо будет указать разрешения для этого файла, чтобы ваша личная учетная запись имела доступ к файлам.
Комментарии:
1. 1. Да 2. Да Проблема, с которой я сталкиваюсь, заключается в том, что не удается загрузить, когда у меня есть несколько областей в моем подключении к воздушному потоку.