【问题标题】:Google Cloud Function + Python谷歌云函数 + Python
【发布时间】:2019-02-15 07:40:23
【问题描述】:

直接跳过去……

我在 Google Cloud 函数中有以下 python 代码

main.py

import flask, requests

def gce_test(request):
  test = {"data": {}, "meta": {}, "error": {}}

  metadata_server = "http://metadata/computeMetadata/v1/instance/"
  metadata_flavor = {'Metadata-Flavor' : 'Google'}

  gce_id = requests.get(metadata_server + 'id', headers = metadata_flavor).text
  gce_name = requests.get(metadata_server + 'hostname', headers = metadata_flavor).text
  gce_machine_type = requests.get(metadata_server + 'machine-type', headers = metadata_flavor).text

  test["data"]["gce_id"] = gce_id
  test["data"]["gce_name"] = gce_name
  test["data"]["gce_machine_type"] = gce_machine_type

  test["meta"]["metadata_server"] = metadata_server
  test["meta"]["metadata_flavor"] = metadata_flavor
  test["meta"]["metadata_server_full"] = metadata_server + 'id'

  test["meta"]['generator'] = 'google-cloud-function'

  return flask.jsonify(test)

我面临的问题是我得到了一个404 page not found for gce_idgce_machine_typegce_name,这意味着对 gce_id 的请求strong>metadata_server 没有创建...

我的问题是如何向 metadata_server 发出 HTTP Get 请求并将实例名称作为参数传递给它...可行吗?

【问题讨论】:

    标签: google-cloud-platform google-cloud-functions


    【解决方案1】:

    您当前正在向 GCE 元数据服务器 URL 发出请求。 Cloud Functions 在 GAE 标准之上运行,因此最终使用 http://metadata.google.internal url。我提供了一个使用当前云函数记录项目 ID 的示例。

    import flask, requests
    
    def gce_test(request):
      test = {"data": {}, "meta": {}, "error": {}}
    
      metadata_server = "http://metadata.google.internal/computeMetadata/v1/project/project-id"
      metadata_flavor = {'Metadata-Flavor' : 'Google'}
    
    
      project = requests.get(metadata_server, headers = metadata_flavor).text
      test["data"]["gce_id"] = project
      return flask.jsonify(test)
    

    【讨论】:

      猜你喜欢
      • 2020-11-21
      • 2021-01-12
      • 2021-05-09
      • 2021-03-04
      • 1970-01-01
      • 2018-12-07
      • 2018-10-02
      • 2021-01-22
      • 2020-07-06
      相关资源
      最近更新 更多