有没有办法从AppEngine Standard访问Google Cloud元数据服务以进行运行时配置?

jcj*_*515 5 google-app-engine google-cloud-platform

我想从App Engine Standard应用程序访问元数据服务.我尝试了一个urlfetch http://metadata.google.internal/computeMetadata/v1/project/attributes并回来了DNS lookup failed:

    logging.info(urlfetch.fetch('http://metadata.google.internal/computeMetadata/v1/project/attributes/').content)
Run Code Online (Sandbox Code Playgroud)

这可能吗?我想在同一个项目中分享App Engine Flex和Standard代码之间的配置.

jcj*_*515 8

GCP slack频道上的一些友好人员向我指出了 RuntimeConfig API,用于在Google Cloud中跨多种类型的服务共享配置.这解决了我正在寻找的共享配置的问题.

对于那些好奇的人,你必须:

  1. 在API管理器中为您的Google云项目启用API
  2. 运行一些gcloud命令:

    gcloud beta deployment-manager runtime-configs create foo-credentials
    gcloud beta deployment-manager runtime-configs variables set "bar-variable-name" "baz-value"  --config-name "foo-credentials"```
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将python google-cloud-runtimeconfig库添加到项目中(我通过它完成pip)

  4. 添加一些python代码以在运行时获取变量:

    config_client = runtimeconfig.Client()
    config = config_client.config('foo-credentials')
    bar = config.get_variable('bar-variable-name')```
    
    Run Code Online (Sandbox Code Playgroud)