我正在构建一个Node.js应用程序,以部署为Azure云服务工作者角色。
作为一种好的做法,我喜欢将所有敏感信息(API密钥等)保留在我的回购中。我通常的解决方案是将敏感信息添加为环境变量,并让我的应用程序访问这些信息。
在(相对较新的)Azure网站中,可以通过“配置”选项卡的“应用程序设置”部分轻松完成此操作。添加新设置并使用process.env.<setting key>
在Node.js中抓取它们。这些设置在更新和部署中保持不变。
但是,在Azure云服务中,情况似乎并非如此。我已将“配置设置”添加到我的ServiceConfiguration.Cloud.cscfg
:
<ConfigurationSettings>
<Setting name="API_KEY_1" value="" />
<Setting name="API_KEY_2" value="" />
</ConfigurationSettings>
...和我的ServiceDefinition.csdef
:
<ConfigurationSettings>
<Setting name="API_KEY_1" />
<Setting name="API_KEY_2" />
</ConfigurationSettings>
部署后,这些设置可通过门户网站进行编辑,我添加了他们的值。
但是,当我重新部署时,设置会被覆盖。我可以看到保持其适当值的唯一方法是将值添加到.cscfg
。但这意味着将此信息提交到我的回购中。
我缺少一个解决方案吗?
答案 0 :(得分:3)
一般方法我会用它将设置放入存储帐户,然后使用针对存储帐户的cscfg设置。启动时,您可以从存储帐户中读取值,并以您需要的任何方式将它们保存在本地。
除此之外,如果您希望继续使用cscfg文件,您可以保留该文件的多个副本,并使用正确的版本进行部署。