我想获取特定项目的服务 URL,我该怎么做?
我需要像 .appspot.com 这样的 URL
我试过 App Engine Admin api,但它只能提供服务的名称。
3 回答
您可以通过 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,格式如下:
从那里,您可以构建自己的服务发现。
非默认服务的 URL 遵循以下模式:
service-dot-projectID.appspot.com
因此,例如,如果您的服务名称是helloworld
并且您的项目 ID 是,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 路径路由到服务。