Авторизованные HTTP-запросы Google Cloud в Python - PullRequest
1 голос
/ 03 мая 2020

Я пытаюсь сделать авторизованный запрос к функции Google Cloud из Python, используя этот код:

import google.auth  
from google.auth.transport.urllib3 import AuthorizedHttp 

credentials, project = google.auth.default()
authed_http = AuthorizedHttp(credentials)
url = "MY_CLOUD_FUNCTON_URL"
response = authed_http.request('POST', url)

, но получаю следующую ошибку:

google.auth.exceptions.RefreshError: ('invalid_scope: Invalid OAuth scope or ID token audience provided.', '{"error":"invalid_scope","error_description":"Invalid OAuth scope or ID token audience provided."}') 

что заставляет меня думать, что мои учетные данные не настроены должным образом, но вызов работает, если я запускаю его из командной строки, используя:

gcloud functions call MY_CLOUD_FUNCTION --data '{"name":"example"}' 

Кто-нибудь знает, почему я получаю эту ошибку? Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 04 мая 2020

Ответ здесь зависит от того, откуда вы пытаетесь вызвать функцию.

Если она находится внутри инфраструктуры GCP (App Engine, Cloud Functions и т. Д. c), вам следует использовать шаги в «Функция-функция» раздел «Аутентификация разработчиков, функций и конечных пользователей» .

Если он внешний, вы должны следовать " Служба для функции " вместо руководства.

...