【问题标题】:How to get URL of deployed App Engine Project如何获取已部署 App Engine 项目的 URL
【发布时间】:2021-07-25 18:51:01
【问题描述】:

我已经使用 maven (https://cloud.google.com/appengine/docs/flexible/java/using-maven) 在 App Engine 中部署了我的应用

如何以编程方式获取 APP 的 URL? 我知道它遵循这种格式https://PROJECT_ID.REGION_ID.r.appspot.com。但是,我不知道区域 ID。如果没有办法获取URL,有没有办法获取区域ID?

编辑

我发现这对此很有用: https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps/get

【问题讨论】:

  • 您可以从谷歌云控制台获取区域ID。它是固定的,因此无需以编程方式进行。
  • 感谢您的回答。是的,我知道它是固定的,但就我而言,我无法访问它。有没有办法以编程方式做到这一点?我知道命令 gcloud app describe 可以显示这一点,但我希望有比从命令中检索标准输出更好的方法
  • 看起来你已经准备好了。当您自己解决问题时,最好回答您自己的问题。
  • @gaefan 不完全是?她在询问 regionID,以及如何以编程方式获取它,gcloud app describeapps.get 给你一个 locationID 而不是 regionID。不过,您说这是一种好习惯并没有错。
  • 编辑:等等,不,我是个白痴,你是对的。它们是一样的,我在考虑区域,而不是区域(无法编辑原件,因为我太慢了没注意到,有 5 分钟的限制)

标签: java maven google-app-engine


【解决方案1】:

我在生产环境中使用此代码来识别 URL。目前无法使用代码动态获取 REGIONID。至少在我当前的 SDK 中它不可用。总有一天他们会这样做的。

根据 Google 文档,目前 REGIONID.r 在 URL 中不是强制性的。在未来的项目中可能需要它。此代码将为您工作。 https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed#region-id

import com.google.appengine.api.modules.ModulesServiceFactory;
import com.google.appengine.api.utils.SystemProperty;
import com.google.apphosting.api.ApiProxy;

public static void main(String[] args) {

    String projectId = ApiProxy.getCurrentEnvironment().getAppId().indexOf("~")>-1?
                ApiProxy.getCurrentEnvironment().getAppId().split("~")[1]:ApiProxy.getCurrentEnvironment().getAppId();
    ModulesService ssf = ModulesServiceFactory.getModulesService();
    String url = null;
    if(SystemProperty.environment.value()!=SystemProperty.Environment.Value.Production) {
        url = "http://localhost:PORT_NUMBER";
    }
    if(ssf.getDefaultVersion(ssf.getCurrentModule()).equals(ssf.getCurrentVersion())) {
        //This is default version
        url = "https://" + projectId + ".appspot.com";
    }
    //The URL with the current version ID  
    url = "https://" + ssf.getCurrentVersion() + "-dot-" + projectId + ".appspot.com";
    //The URL with the module name, current version name
    url = "https://" + ssf.getCurrentVersion() + "-dot-" + ssf.getCurrentModule() + "-dot-" + projectId + ".appspot.com";

}

【讨论】:

    【解决方案2】:

    此命令将获取已部署 App Engine 的 URL:

    gcloud app browse
    

    【讨论】:

    • 请添加解释以提高洞察力并为 OP 提供更多信息
    猜你喜欢
    • 1970-01-01
    • 2012-02-11
    • 2013-03-11
    • 2013-11-06
    • 1970-01-01
    • 2017-05-01
    • 2015-09-21
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多