Невозможно включить биллинг для нового проекта Google Cloud Platform в Python API - PullRequest
0 голосов
/ 19 декабря 2018

Проект был создан Python с использованием google_application_defaults, API биллинга был успешно активирован и проверен в командной строке с помощью

os.system(gcloud services enable cloudbilling.googleapis.com)
os.system(gcloud services list --enabled)

Затем при запуске:

from googleapiclient import discovery, errors, logging
CB = discovery.build("cloudbilling", "v1", credentials = default_creds,  cache_discovery = False)   
billing_body = {"projectID": projectID, "name": "projects/"+projectID+"/billingInfo", "billingEnabled": True, "billingAccountName": "billingAccounts/"+billingAccount}
billingUP = CB.projects().updateBillingInfo(name = projectID, body = billing_body )
try:
    billing_resp = billingUP.execute()
    print("Billing succesfully enabled")
except errors.HttpError as err:
    billing_resp = None
    print("request voided")
    logging.error("There was an error creating the project. Check:")
    logging.error(err._get_reason())

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

Cloud Billing API has not been used in project XXXXXXXXXX before or it  is disabled. Enable it by visiting https://console.developers.google.com/apis/api/cloudbilling.googleapis.com/overview?project=XXXXXXXXXXX then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

Я также попытался активировать его непосредственно в командной строке вне скрипта python, но ошибка сохраняется.Я пробовал использовать разные форматы в части "projectID" по запросу billingUp: projectName, projects / projectName, projectID, projects / projectID и ничего не работает.Любые возможные решения?

1 Ответ

0 голосов
/ 19 декабря 2018

Я только что сделал обходной путь, очень примитивное решение, но сработало.Надеюсь, есть другой способ сделать это.Все, что я делал, это вызывал командную оболочку с помощью os.system и использовал gcloud для ее включения:

 billing_command = "gcloud beta billing projects link {} --billing-account {}".format(projectID, billingAccount)
os.system(billing_command)
...