【问题标题】:Retrieve project id from Google Compute Engine machine?从 Google Compute Engine 机器中检索项目 ID?
【发布时间】:2018-05-10 02:31:33
【问题描述】:

我有两个 Google Cloud Platform 项目(暂存和生产)。我希望我的应用程序部署在 Google Compute Engine 实例上以自动检测项目 ID。这样做的方法是什么?

【问题讨论】:

    标签: google-compute-engine google-cloud-platform


    【解决方案1】:

    您可以通过编程方式查询metadata server 以获取各种信息,包括项目ID。

    项目编号:

    $ curl "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google"
    

    这将返回您的项目 ID,例如:my-gcp-project

    或者如果您需要数字项目 ID:

    $ curl "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google"
    

    这将返回数字项目ID,例如:0123456789

    【讨论】:

      【解决方案2】:

      您可以直接在 shell 脚本中确定项目 ID:

      PROJECTID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")
      

      或者使用您的语言的元数据库来获取所需的数据。
      我可以通过以下方式在 Golang 中获取项目 ID:

      import "cloud.google.com/go/compute/metadata"
      ...
      var ProjectId, _ = metadata.ProjectID()
      

      【讨论】:

      • @I.Tyger 部署到 GCP 时 - 是的,当然。不记得它是否在本地工作。最喜欢的是,它没有。
      • 它在本地不起作用。我可能需要在本地也适用于本地测试的方法。
      【解决方案3】:

      在我的环境中,我有:

      curl: (6) Could not resolve host: metadata.google.internal
      

      以下内容对我有用:

      PROJECTID=`gcloud projects list | awk 'FNR>1 {print$1}'`
      

      返回项目详细信息,然后解析项目ID。

      【讨论】:

      • metadata.google.internal 在谷歌云之外无法访问。问题的上下文是一个已经在谷歌云中运行的应用程序。
      猜你喜欢
      • 2016-10-27
      • 2020-07-23
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2014-02-03
      • 2015-11-05
      • 2015-06-17
      • 1970-01-01
      相关资源
      最近更新 更多