Вызов Google Cloud Function из python с использованием служебной учетной записи для аутентификации - PullRequest
1 голос
/ 09 апреля 2020

У меня есть облачная функция с типом триггера, установленным на HTTP, а также есть учетная запись службы, у которой есть разрешения для вызова облачной функции. Я хочу вызвать облачную функцию из скрипта python. Я использую следующий сценарий для вызова функции:

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

credentials = service_account.Credentials.from_service_account_file('/path/to/service-account-credentials.json')

scoped_credentials = credentials.with_scopes(['https://www.googleapis.com/auth/cloud-platform'])

authed_http = AuthorizedHttp(scoped_credentials)

response = authed_http.request('GET', 'https://test-123456.cloudfunctions.net/my-cloud-function')

print(response.status)

В ответ я получаю сообщение Несанкционированная ошибка (401). Это правильный способ вызова?

1 Ответ

2 голосов
/ 09 апреля 2020

Чтобы вызвать облачную функцию, вам нужен идентификационный токен с конечной точкой облачных функций

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession


url = 'https://test-123456.cloudfunctions.net/my-cloud-function'

creds = service_account.IDTokenCredentials.from_service_account_file(
       '/path/to/service-account-credentials.json', target_audience=url)

authed_session = AuthorizedSession(creds)

# make authenticated request and print the response, status_code
resp = authed_session.get(url)
print(resp.status_code)
print(resp.text)

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