python - 使用 app.yaml 在 GAE 中安全地存储环境变量

标签 python google-app-engine python-2.7 environment-variables

我需要将 API key 和其他敏感信息作为环境变量存储在 app.yaml 中,以便在 GAE 上进行部署。这样做的问题是,如果我将 app.yaml 推送到 GitHub,此信息就会公开(不好)。我不想将信息存储在数据存储中,因为它不适合项目。相反,我想在每次部署应用时从 .gitignore 中列出的文件中换出值。

这是我的 app.yaml 文件:

application: myapp
version: 3 
runtime: python27
api_version: 1
threadsafe: true

libraries:
- name: webapp2
  version: latest
- name: jinja2
  version: latest

handlers:
- url: /static
  static_dir: static

- url: /.*
  script: main.application  
  login: required
  secure: always
# auth_fail_action: unauthorized

env_variables:
  CLIENT_ID: ${CLIENT_ID}
  CLIENT_SECRET: ${CLIENT_SECRET}
  ORG: ${ORG}
  ACCESS_TOKEN: ${ACCESS_TOKEN}
  SESSION_SECRET: ${SESSION_SECRET}

有什么想法吗?

最佳答案

此解决方案很简单,但可能并不适合所有不同的团队。

首先,将环境变量放在env_variables.yaml中,例如,

env_variables:
  SECRET: 'my_secret'

然后,在 app.yaml

中包含这个 env_variables.yaml
includes:
  - env_variables.yaml

最后,将 env_variables.yaml 添加到 .gitignore 中,使存储库中不存在 secret 变量。

在这种情况下,env_variables.yaml 需要在部署管理器之间共享。

关于python - 使用 app.yaml 在 GAE 中安全地存储环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22669528/

相关文章:

Python 类 __div__ 问题

应用程序引擎上的 python-raven 因错误而超时

python - 为什么我从 App Engine 调用 Google API 时会收到 invalid_grant?

python - 将训练数据的四分位数切割应用于测试数据

python - 无法通过在 python 3.4 上运行的 pip 安装模块

python-2.7 - 如何将系统命令行参数传递给Scrapy CrawlerProcess?

python - NLP-POS 挑战

python - 如何在不绑定(bind) IP 的情况下在特定端口上运行服务

java - 如何为数据存储管理配置任务队列以最大限度地减少前端实例数量?

python - Django Admin 显示外键值