Для автоматизированного процесса рекомендуется использовать сервисный аккаунт. Для этого вы можете использовать библиотеку google-oauth . Вы можете сгенерировать токен доступа следующим образом:
# With default credential (your user account or the Google Cloud Component service account.
# Or with the service account key file defined in the GOOGLE_APPLICATION_CREDENTIALS env var -> for platform outside GCP)
credentials, project_id = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
# With service account key file (not recommended)
# credentials = service_account.Credentials.from_service_account_file('service-account.json',
# scopes=["https://www.googleapis.com/auth/cloud-platform"])
from google.auth.transport import requests
credentials.refresh(requests.Request())
print(credentials.token)
Однако, если вы хотите вызвать облачные API Google, я рекомендую вам использовать авторизованный объект запроса
Вот пример BigQuery вызов. Вы можете использовать файл ключей сервисной учетной записи для создания учетных данных, как в моем предыдущем примере.
base_url = 'https://bigquery.googleapis.com'
credentials, project_id = google.auth.default(scopes=['https://www.googleapis.com/auth/cloud-platform'])
project_id = 'MyProjectId'
authed_session = AuthorizedSession(credentials)
response = authed_session.request('GET', f'{base_url}/bigquery/v2/projects/{project_id}/jobs')
print(response.json())
EDIT
Если вы хотите использовать API Google, файл ключа учетной записи службы не нужен (и я рекомендую вам не использовать его) на вашем компьютере и в компоненте GCP. Учетных данных приложения по умолчанию всегда достаточно.
- Когда вы находитесь в своей локальной среде, вы должны выполнить команду
gcloud auth application-default login
. С помощью этой команды вы зарегистрируете свою личную учетную запись в качестве учетных данных по умолчанию при локальном запуске приложения. (конечно, вам необходимо, чтобы адрес электронной почты вашей учетной записи был авторизован для компонента, который вы вызываете) - Когда вы находитесь в среде GCP, каждый компонент имеет учетную запись службы по умолчанию (или вы можете указать ее, настроив свой составная часть). Благодаря компоненту «идентичность» вы можете использовать учетные данные по умолчанию. (конечно, у вас должен быть авторизован адрес электронной почты сервисного аккаунта на вызываемом компоненте)
ТОЛЬКО когда вы запускаете приложение автоматически и вне GCP, вам нужна услуга файл ключа учетной записи (например, в вашем CI / CD, отличном от Cloud Build, или в приложении, развернутом на другом облачном провайдере или локально)
Почему не рекомендуется использовать файл ключа учетной записи службы? Это, по крайней мере, моя рекомендация, потому что этот файл ... файл !! Это проблема. У вас есть способ аутентифицировать учетную запись службы в простом файле: вы должны надежно хранить его (это секрет и метод аутентификации !!), вы можете скопировать его, вы можете отправить по электронной почте, вы даже можете зафиксировать его в репозиторий publi c GIT ... Кроме того, Google рекомендует менять их каждые 90 дней, так что чередовать, отслеживать и управлять
- кошмар.