如何在Node.js服务器上处理多个GCP服务帐户?

时间:2019-07-09 23:06:31

标签: node.js google-cloud-platform dialogflow

我正在基于Node.js的服务器中实现dialogflow v2 api。 设置就像-我的服务器从最终用户那里接收查询并调用dialogflow v2 api,在从dialogflow获取响应后,它将响应发送回用户。

要将请求发送到dialogflow api,我需要设置名为GOOGLE_APPLICATION_CREDENTIALS的env变量,该变量将指向生成的服务帐户密钥的json文件。

情况是,我有多个漫游器,因此有多个与它们连接的密钥。

在这种情况下,根据发送请求的机器人,我正在考虑更改请求到达的环境变量。

我的问题是-
这是处理这种情况的正确方法吗? 如果两个请求同时到达,将会发生什么情况?在这种情况下,它们是否会出现混合匹配或环境变量冲突的问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

我不会为每个请求更改环境变量。如您所述,身份验证特定于给定的请求,而环境变量应用于存储在对“环境”提出的所有请求之间共享的配置元素。

一种常见方法是分别指定服务帐户的路径(可以使用服务帐户文件的路径来初始化一个dialogflow客户端):

layout_widht="200dp"

-直接从答案https://stackoverflow.com/a/50546430开始编码。另请参阅Google SessionsClient docs

因此,当请求进入时,请查看请求的某些参数以确定要使用的身份验证,然后使用该身份验证文件的路径初始化客户端。另外,不用说,但是要保护那些文件,例如密码(不要将其提交到公共仓库等)。

如果您发现自己正在管理很多秘密,或者需要经常更改或更新它们,则可以考虑使用一项服务来为您解决此问题,例如GCP的密钥管理系统(https://cloud.google.com/kms/)可以进行密钥轮换/管理更容易处理。 GCP blog post on service account management

对于小型项目,指定文件路径应该可以正常工作。