在 Cloud Code 中调试时访问 computeMetadata

Accessing computeMetadata when debugging in Cloud Code

我正在尝试在本地调试 Cloud 运行 容器。在我的代码中,我试图通过 computeMetadata 检索有关环境的信息。

    location = requests.get("http://metadata.google.internal/computeMetadata/v1/instance/region",
                          headers={'Metadata-Flavor': 'Google'}).text
    logging.warning(f"Location set to {location}")
    project = requests.get("http://metadata.google.internal/computeMetadata/v1/project/project-id",
                              headers={'Metadata-Flavor': 'Google'}).text
    logging.warning(f"Project set to {project}")

执行这段代码时出现以下错误。

urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='metadata.google.internal', port=80): Max retries exceeded with url: /computeMetadata/v1/instance/region (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fb00be99190>: Failed to establish a new connection: [Errno 111] Connection refused'))

当然,据我所知 运行 在我的 Macbook 上的端口 80 上没有任何东西可以提供这个服务,而且容器中似乎也没有任何东西可以提供,所以它无法连接是有道理的。

话虽如此,我如何才能在本地执行此代码以确保它在部署之前按照我想要的方式运行?目前,我将其包装在 try/except 语句中 - 但它不适合复制真实世界的场景。

有几个模拟器可以在本地运行。

纪尧姆在问题评论中指出one which has had more GCE focus

最近 Kelsey Hightower 发布了 one more focused on metadata available in Cloud Run