【发布时间】:2019-02-15 03:07:15
【问题描述】:
我正在关注guide here,但似乎无法让我的 Python 应用(在 GCP 上正常部署)读取我在 Cloud Functions 中创建的环境变量。
函数的 REST 端点很好地返回了环境变量,因为我在函数中编写了 Python 方法,只对传入的请求参数执行 os.environ.get()。但是,在我实际部署的应用程序中,我不想每次需要环境变量时都进行 REST GET 调用。我希望在我的应用程序中使用 os.environ.get() 就足够了,但这会返回空白。
如何通过简单的os.environ.get() 来检索 GCP 上的环境变量,还是我真的每次都必须调用端点?
【问题讨论】:
-
您只能在运行时获取您在部署时为给定函数定义的用户定义环境变量。根据您引用的页面,
gcloud functions deploy FUNCTION_NAME --set-env-vars FOO=bar,BAZ=boo将允许您在FUNCTION_NAME中使用os.environ.get("FOO")和os.environ.get("BAR")。 -
谢谢,但这并不能解决我的问题。我需要在部署在 GCP 上的另一个应用程序中访问 os.environ.get("FOO"),而不是从函数内部访问。
-
您从另一个环境(例如另一个函数或其他 GCP 部署的代码)访问一个环境的变量(例如 Cloud Functions 下的一个函数)的唯一方法是通过某种形式的进程间通信并且可能通过 REST 访问云功能。
-
你不能直接进入另一个函数的环境。根据定义,Cloud Functions 环境变量仅对运行该函数的进程可见,这就是环境变量的工作方式。您需要让这两个代码位都参考其他来源(可能是某种数据库)的配置,这将使一切变得非常复杂。
-
我只使用 Cloud Functions,因为我认为这将是他们的用途。因此,如果我理解这一点,如果我在 GCP 上部署了 Python 应用程序,并且我想访问特定于环境的变量(取决于应用程序的部署位置),我必须通过 REST 或其他方式访问不同的存储相似的?而且没有办法像我们“通常”那样做
os.environ.get()?
标签: python google-cloud-platform google-cloud-functions