【问题标题】:Setting environment variables in Google Cloud Platform using Cloud Functions使用 Cloud Functions 在 Google Cloud Platform 中设置环境变量
【发布时间】: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


【解决方案1】:

我已经为此苦苦挣扎了一段时间。我发现为整个应用程序设置环境变量的唯一解决方案是在app.yaml 中定义它们。请参阅 env_variables 部分 here

但是,如果您不希望人们看到环境变量,则不能将 app.yaml 提交到任何版本控制存储库。您可以将其添加到.gitignore。如果这些变量包含敏感数据,则有更安全的方法来处理机密存储。如果您需要更强大的安全性,您可能会找到一些灵感here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2021-09-23
    • 2021-02-13
    • 2020-04-22
    • 2017-11-29
    • 2020-11-13
    • 1970-01-01
    相关资源
    最近更新 更多