0

我正在尝试在本地调试 Cloud Run 容器。在我的代码中,我试图通过 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 语句中——但它对于复制现实世界的场景并不理想。

4

1 回答 1

1

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

纪尧姆在问题评论中指出了一个更关注 GCE的评论

最近,Kelsey Hightower 发布了一款更专注于 Cloud Run 中可用的元数据

于 2020-12-12T16:48:09.993 回答