我想获取特定项目的服务URL,该怎么做?
我需要像.appspot.com这样的URL
我尝试了App Engine Admin api,但它只能提供服务名称。
答案 0 :(得分:0)
默认服务以外的服务的URL遵循以下模式:
service-dot-projectID.appspot.com
例如,如果您的服务名称为helloworld
,而项目ID为myprojectid
,则URL为helloworld-dot-myprojectid.appspot.com
答案 1 :(得分:0)
您可以通过3个步骤通过API调用获取App Engine服务版本的网址:
1)进行身份验证并获得对App Engine Admin API的访问令牌:
gcloud auth application-default print-access-token
2)和访问令牌,列出App Engine中的所有服务,并获取其版本ID(在嵌套字段“分配”中)和服务ID:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services
3)带有版本ID和服务ID,获取有关该版本的完整数据:
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:
从那里,您可以构建自己的服务发现。
答案 2 :(得分:0)
如果您在同一项目中手动构建服务的 url,您可能会发现设置一些调度规则更容易。
<块引用>dispatch.yaml 允许您覆盖路由规则。您可以使用 dispatch.yaml 根据 URL 中的路径或主机名将传入请求发送到特定服务(以前称为模块)。
根据您的需要,您可以根据 app_identity.get_default_version_hostname()
构建您的 url,而无需担心底层服务,因为调度规则将通过 url 路径路由到服务。