Вызов функции Google Cloud из Python - PullRequest
1 голос
/ 03 мая 2020

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

import requests
url = "MY_CLOUD_FUNCTON_URL"
data = {'name': 'example'}
response = requests.post(url, data = data)

, но я получаю сообщение об ошибке: Your client does not have permission to get URL MY_CLOUD_FUNCTON from this server

Кто-нибудь знает, как мне избежать этой ошибки? Я предполагаю, что должен как-то передавать учетные данные как часть запроса?

Также обратите внимание, что если я вместо этого попытаюсь вызвать функцию через gcloud из командной строки, как показано ниже, то это работает, но я хочу сделать это изнутри python

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

Любая помощь будет очень признательна!

1 Ответ

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

У вас есть несколько вариантов здесь. Либо откройте функцию для публикации c, чтобы любой мог ее вызвать, либо выберите более безопасный маршрут, хотя для этого потребуется выполнить немного больше шагов. Я расскажу о втором варианте, так как это тот, который я бы предложил по соображениям безопасности, но если вы будете удовлетворены простым открытием функции для publi c (что особенно полезно, если вы пытаетесь создать конечную точку publi c в конце концов), см. эту документацию .

Если вы хотите ограничить число тех, кто может вызывать ваш GCF, вам придется выполнить еще несколько шагов.

  1. Создайте учетную запись службы и назначьте ей роль «Приглашающий в облачные функции» (если вы просто хотите ограничить ее разрешения только для вызова GCF)
  2. После назначения роли учетной записи службы ), на следующей странице вы можете создать ключ
  3. После создания ключа учетной записи службы и загрузки его как credentials.json следующий шаг будет простым. Вы просто заполнили бы переменную среды GOOGLE_APPLICATION_CREDENTIALS путем к файлу credentials.json.

После выполнения этих шагов вы можете просто вызвать GCF, как вы делали это раньше, только на этот раз он будет вызывать как созданную вами учетную запись службы, которая содержала все разрешения, необходимые для вызова GCF.

...