我正在尝试将private_key
用于某些GCP服务nodejs客户端库,例如@google-cloud/pubsub
,@google-cloud/trace-agent
我从服务帐户凭据json文件中获得了private_key
,如下所示:
我正在尝试将其用作云函数的环境变量。
.env.yaml
:
并像这样使用它:
// ...
credentials: {
private_key: envs.private_key,
client_email: envs.client_email
},
projectId: envs.X_GOOGLE_GCLOUD_PROJECT
但是出现错误:
错误:错误:0906D06C:PEM例程:PEM_read_bio:无起始行
我检查stackdriver日志,这是我得到的private_key
环境变量:
我的猜测是private_key
的格式不正确。这可能是由换行符\n
引起的。那么,像这样使用private_key
时正确的格式是什么?
答案 0 :(得分:1)
在.env.yaml文件中设置密钥不是一个好主意。的确,您可以将其提交到git中,甚至可以在公共存储库中进行提交,并将其以纯文本格式设置为函数的环境变量。
如果将文件设置在存储桶中并在运行时加载它会更好。顺便说一句,您将在项目文件中保持秘密。
另一种解决方案是使用kms加密密钥,并在运行时对其进行解密。这次,您的项目文件中仍然包含秘密,但是已加密。
但是,您需要另一个服务帐户吗?这个在功能上还不够吗?
答案 1 :(得分:0)
GCLOUD_KEY='{"private_key_id":"XXX", "private_key":"YYY",
"client_email":"ZZZ@ZZZ.COM", "client_id":"ABC123",
"type":"service_account"}'