2

我想获取特定项目的服务 URL,我该怎么做?
我需要像 .appspot.com 这样的 URL
我试过 App Engine Admin api,但它只能提供服务的名称。

4

3 回答 3

1

您可以通过 API 调用获取 App Engine 服务版本的 url,分 3 步:

1) 对 App Engine Admin API 进行身份验证并获取访问令牌:

gcloud auth application-default print-access-token

2) 使用访问令牌,列出 App Engine 中的所有服务,并获取它们的版本 ID(在嵌套字段“allocations”中)和服务 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,格式如下:

从那里,您可以构建自己的服务发现。

于 2019-02-07T15:18:35.860 回答
0

非默认服务的 URL 遵循以下模式:

service-dot-projectID.appspot.com

因此,例如,如果您的服务名称是helloworld并且您的项目 ID 是,myprojectid那么 URL 将是helloworld-dot-myprojectid.appspot.com

于 2019-02-07T12:40:46.840 回答
0

如果您在同一个项目中手动构建服务的 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 路径路由到服务。

于 2021-01-21T19:40:27.740 回答