在不使用env vars的情况下在Heroku上读取秘密配置文件

时间:2015-07-30 04:38:11

标签: node.js heroku google-cloud-platform google-cloud-pubsub

我将Google Cloud Pub Sub API与NodeJS一起使用,documented here。我正在使用Heroku来运行我的服务器。

Node JS + Pub Sub页面上的示例代码要求我指定文件的路径:

pubsub = gcloud.pubsub({
    projectId: 'my-project',
    keyFilename: '/path/to/keyfile.json'
});

我通常使用Heroku的配置变量存储机密和API密钥,但在这种情况下,似乎GCloud API 需要我指定文件的路径。所以,我需要将文件签入Heroku,但不是我的GitHub仓库。

我尝试了以下内容:Pushing .gitignore files to specific remoteHow can I upload my application to github but remove sensitive authorization information?但问题是,一旦我强制添加(git add -f keyfile.json)json文件并从中提交并创建一个新文件分支,我无法将该提交推送到Heroku,因为当我git push heroku master时,它会说Everything is up to date。无论如何,这似乎非常混乱。必须有一种更简洁的方法让Google Cloud与Heroku一起使用。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

可爱的人们在GoogleCloudPlatform上回答:https://github.com/GoogleCloudPlatform/gcloud-node/issues/761

文档中的代码示例中未提及,但您只需添加凭据对象并将其传递给配置即可。凭证对象可以读取env vars。

此处提供更多信息:https://googlecloudplatform.github.io/gcloud-node/#/authorization

答案 1 :(得分:0)

不是用于nodejs,而是用于GO(GOLANG),将每个字段值作为环境变量中的单独键保留,然后您将需要执行以下操作,创建结构,转换为json(替换每个{{1} }移至private_key中的\\n ),然后输入选项。 WithCredentialsJSON

\n