如何使用密钥将节点应用程序正确部署到GAE?

时间:2018-01-13 08:40:54

标签: google-app-engine deployment secret-key nconf

我正在使用nconf探索GAE,我想知道在部署应用程序后是否保护了以下设置。

我关注的是我的“config.dev.json”和“config.prod.json”文件,尽管它们包含在“.gitignore”中。

在我这样做之后,我不确定传递给gae的信息(我不希望我的配置键暴露):

$ git add .
$ git commit -m 'Commiting'
$ glcoud app deploy

我的节点应用程序结构如下所示:

 - /myProject
   - /node_modules
   - .gitignore
   - app.js
   - app.yaml
   - config.js
   - keys.dev.json
   - keys.prod.json
   - package-lock.json
   - package.json

// .gitignore

 node_modules
 keys.dev.json
 keys.prod.json

// config.js:

 const nconf = require("nconf");
 nconf.argv().env();

 if (nconf.get("NODE_ENV") === "production") {
     nconf.file("keys.prod.json");
 } else {
     nconf.file("keys.dev.json");
 }
 ...

1 个答案:

答案 0 :(得分:2)

.gitignore中包含文件对GAE上的部署没有任何影响,该文件仅由git使用。

如果您想阻止将文件部署到GAE,则需要使用skip_files文件General settings中的app.yaml选项:

  

<强> skip_files

     

可选。 skip_files 元素指定了哪些文件   应用程序目录不会上传到App Engine。价值   是正则表达式,还是正则表达式列表。任何   与任何正则表达式匹配的文件名将被省略   上传应用程序时要上传的文件列表。

     

例如,要跳过名称以 .bak 结尾的文件,请添加    skip_files 部分如下:

skip_files:
- ^(.*/)?\.bak$

附注

  • 如果我理解正确,您的应用会使用这些文件,因此我觉得您必须将它们与您的应用一起部署。
  • 即使在GAE上部署了文件,在确定文件是否暴露于外部请求时,您的应用程序的责任(以及完全控制)也是如此。
  • 如果您想确切知道部署中包含哪些文件,可以使用gcloud app deploy命令的--verbosity选项在部署期间看到它们显示。