【问题标题】:Google Cloud Shell: How to find your web preview URLGoogle Cloud Shell:如何找到您的网络预览网址
【发布时间】:2020-08-11 16:41:42
【问题描述】:

在 Google Cloud Platform 控制台上使用 Google Cloud Shell 时,单击“网络预览”按钮会将您重定向到在端口 8080 上为您的应用提供服务的 URL。

因此,例如,您的实例的 URL 可能类似于:

https://8080-1234abcd-abcd-1234-abcd-1234abcd.europe-west1.cloudshell.dev/?authuser=0

有没有办法从终端确定这个 URL 是什么,而不必点击“网络预览”按钮?

注意:对于那些想知道这是什么用例的人。我正在使用SSH cloud shell access 功能,该功能允许您从任何终端仿真器通过 SSH 远程访问您的云 shell 实例。 不幸的是,这样做意味着您不再可以访问“网络预览”按钮(因为您使用的是自己的终端,而不是基于网络的终端),因此无法知道您的网络预览的 URL 将是什么位于。

【问题讨论】:

  • 当我看到有人提出这个问题时我真的很兴奋,当我看到没有 CLI 选项来回答它时我真的很失望。

标签: google-cloud-platform google-cloud-shell


【解决方案1】:

您可以使用 Cloud Shell 中预配置的环境变量 WEB_HOST 从终端确定 URL 的内容。

格式化后的预览 URL 如下所示:
https://$PORT-$WEB_HOST

【讨论】:

    【解决方案2】:

    Cloud Shell 是一种工具,主要用于提供管理 GCP 资源的环境,不打算用作开发环境(但可用于测试代码 sn-ps)

    document 中所述,从命令行(通过非 Web 终端上的 ssh)访问 Cloud Shell 处于 alpha 版本。

    此功能可能非常有用,但目前无法在 GCP 控制台(Web UI)之外生成preview url,我的建议是打开一个功能请求以允许创建preview URL在网络终端之外。

    要创建功能请求,您必须在此 page 上填写公共问题跟踪器。

    作为一种解决方法,您可以使用免费帐户 ngrok 在任何云或本地服务器上生成预览 URL,这是一个允许您生成临时 HTTPS URL 指向的软件以与 Cloud Shell 网络预览相同的方式连接到任何端口(演示端点)上的 localhost 服务。

    【讨论】:

    • 谢谢!我肯定会将此记录为问题。对我来说,它是唯一缺少它来完全取代我的本地开发环境的部分。它以目前的形式非常有用。
    【解决方案3】:

    生成url主机名的规则是不确定的,有时它的[port]-[guid]-[region].cloudshell...,而有时它有一个固定的名称[port]-[host]-..., “主机”是您的云外壳虚拟机的主机名

    【讨论】:

      【解决方案4】:

      有没有办法确定这个 URL 将来自 终端,无需点击“网页预览”按钮?

      是的,有可能。

      例如:

      PORT="8080"
      cd `mktemp -d` \
          && echo '<html><body>Hello World</body></html>' >./index.html \
          && python -m SimpleHTTPServer $PORT &
      AUTHUSER="0"
      ADDPATH=""
      echo "https://shell.cloud.google.com/devshell/proxy?authuser=$AUTHUSER&port=$PORT&environment_id=default$ADDPATH"
      

      点击链接后,代理端点将对 GCP 用户进行身份验证并重定向到最终目的地(例如https://8080-cs-215311858653-default.cs-us-east1-vpcf.cloudshell.dev/?authuser=0)。

      虽然可以使用以下命令生成最终 URL,但使用它并不是一个好主意,因为该端口只有在代理端点对用户进行身份验证后才能访问。

      ZONE=$(curl -s -H "Metadata-Flavor: Google" metadata/computeMetadata/v1/instance/zone)
      ZONE="${ZONE##*/}"
      REGION=${ZONE%-*}
      MACHINE=$(hostname)
      MACHINE="${MACHINE%-default*}-default"
      PORT="8080"
      echo "https://${PORT}-${MACHINE}.cs-${REGION}-vpcf.cloudshell.dev/?authuser=0"
      

      【讨论】:

      • 太棒了!我得试试这个。感谢您的贡献。
      猜你喜欢
      • 1970-01-01
      • 2018-02-12
      • 2021-10-25
      • 2013-05-21
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      相关资源
      最近更新 更多