как получить locationId в Google App Engine без терминала - PullRequest
0 голосов
/ 07 августа 2020

Чтобы использовать scheduler_v1.CloudSchedulerClient (). Location_path () в Python, мне нужен родительский элемент с projectId и LocationId. Я знаю, как получить projectId в коде и locationId с терминала, но как это сделать в моем коде?

Я пытался проверить этот сайт (https://cloud.google.com/functions/docs/reference/rpc/google.cloud.location), но там примеров нет, идк что с этим делать

from google.cloud import scheduler_v1


from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file('/home/myname/folder/service_account.json')
service = googleapiclient.discovery.build('cloudresourcemanager', 'v1', credentials = credentials)
request = service.projects().list()
response = request.execute()
client = scheduler_v1.CloudSchedulerClient()

for project in response['projects']:
    parent = client.location_path(project['projectId'], ['LocationID'])
    for element in client.list_jobs(parent):
        print(element)

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Не обязательно использовать cloudresourcemanager для получения идентификатора проекта, вместо этого вы можете использовать переменную среды App Engine GOOGLE_CLOUD_PROJECT

Вы можете использовать API администратора механизма приложений для получить идентификатор местоположения, пожалуйста, проверьте этот фрагмент кода.

    credentials = GoogleCredentials.get_application_default()
    #start discovery service and use appengine admin API
    service = discovery.build('appengine', 'v1', credentials=credentials, cache_discovery=False)

    #disable cache for app engine std (avoid noise in logs)
    logging.getLogger('googleapiclient.discovery_cache').setLevel(logging.ERROR)

    #take the project ID form the environment variables
    project = os.environ['GOOGLE_CLOUD_PROJECT']

    #get App engine application details
    req = service.apps().get(appsId=project)

    response =req.execute()

    #this is the application location id
    location_id = (response["locationId"])
0 голосов
/ 07 августа 2020

В Google App Engine есть некоторые переменные среды, устанавливаемые средой выполнения. Вы можете получить его с помощью os.environ.get (environment_name).

https://cloud.google.com/appengine/docs/standard/python3/runtime#environment_variables

...