Я создал функцию Google Cloud, которую можно вызывать через HTTP. Доступ к функции ограничен только учетной записью Сервиса.
Если бы у меня был Django View, который должен вызывать эту функцию и ожидать ответа?
Вот что я пробовал
1) Перед запуском Django я установил переменную среды
export GOOGLE_APPLICATION_CREDENTIALS
2) Я пытался вызвать функцию, используя автономный код, но вскоре понял, что это ни к чему не приведет, потому что я не мог понять следующий шаг после этого.
from google.oauth2 import service_account
from apiclient.http import call
SCOPES = ['https://www.googleapis.com/auth/cloud-platform']
SERVICE_ACCOUNT_FILE = 'credentials/credentials.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
Документация Google дает вам документацию по API, но нет примера кода о том, как вызывать методы или что импортировать в вашем коде Python, и каковы способы вызова этих методов.
Как отправить запрос POST с данными JSON в облачную функцию с авторизацией через учетную запись службы?
** Править Пару часов спустя я провел еще несколько копаний и понял эточастично
from google.oauth2 import service_account
import googleapiclient.discovery
import json
SCOPES = ['https://www.googleapis.com/auth/cloud-platform']
SERVICE_ACCOUNT_FILE = 'credentials/credentials.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
cloudfunction = googleapiclient.discovery.build('cloudfunctions', 'v1', credentials=credentials)
#projects/{project_id}/locations/{location_id}/functions/{function_id}.
path='some project path'
data='some data in json that works when invoked through the console'
data=json.dumps(data)
a=cloudfunction.projects().locations().functions().call(name=path, body=data).execute()
Теперь я получаю еще одну ошибку.
Details: "[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'description': 'Invalid JSON payload received. Unknown name "": Root element must be a message.'}]}]">
Не могу найти никакой документации по этому вопросу. Как должен формироваться JSON?
, что делает JSON вроде {"message":{my actual payload}}
не работающим.