Как сделать обнаружение службы для Google App Engine? Как получить сервисный URL?
Я хочу получить URL-адреса служб для конкретного проекта, как я могу это сделать?
Мне нужны URL, как.appspot.com
Я попробовал API App Engine Admin, но он может предоставить только названия сервисов.
3 ответа
Вы можете получить URL версий сервисов App Engine через вызовы API, в 3 этапа:
1) аутентифицируйтесь и получите токен доступа к API администратора App Engine:
gcloud auth application-default print-access-token
2) с помощью токена доступа перечислите все службы в App Engine и получите их идентификатор версии (во вложенном поле "размещения") и идентификатор службы:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services
3) с идентификатором версии и идентификатором услуги, получить полные данные о версии:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/[SERVICE_ID]/versions/[VERSION_ID]/?view=FULL
Поле versionUrl
доставляет URL-адрес приложения для этой конкретной версии в следующей форме:
сервис по умолчанию:
другие услуги:
https: // [service_id] -dot- [version_id]-dot-[PROJECT_ID].appspot.com
Оттуда вы можете создать свой собственный сервис обнаружения.
URL службы, отличной от значения по умолчанию, следует этому шаблону:
service-dot-projectID.appspot.com
Так, например, если название вашей службы helloworld
и ваш идентификатор проекта myprojectid
тогда URL будет helloworld-dot-myprojectid.appspot.com
Если вы вручную создаете URL-адреса для сервисов в рамках одного проекта, вам может быть проще настроить некоторые правила отправки.
https://cloud.google.com/appengine/docs/standard/python3/reference/dispatch-yaml
В файле dispatch.yaml можно переопределить правила маршрутизации. Вы можете использовать dispatch.yaml для отправки входящих запросов в определенную службу (ранее известную как модули) на основе пути или имени хоста в URL-адресе.
В зависимости от ваших потребностей вы можете создать свой URL-адрес из
app_identity.get_default_version_hostname()
не беспокоясь о базовой службе, поскольку правила отправки будут направляться к службе по URL-адресу.