-1

我正在尝试使用private_key一些 GCP 服务 nodejs 客户端库,例如@google-cloud/pubsub@google-cloud/trace-agent

private_key从这样的服务帐户凭据 json 文件中得到:

在此处输入图像描述

我正在尝试将其用作云功能的环境变量。

.env.yaml

在此处输入图像描述

并像这样使用它:

// ...

  credentials: {
        private_key: envs.private_key,
        client_email: envs.client_email
  },
  projectId: envs.X_GOOGLE_GCLOUD_PROJECT

但出现错误:

错误:错误:0906D06C:PEM 例程:PEM_read_bio:没有起始行

我检查堆栈驱动程序日志,这是private_key我得到的环境变量:

在此处输入图像描述

我的猜测是格式private_key不正确。这可能是由换行符引起的\n。那么,这样使用时正确的格式是什么private_key

4

2 回答 2

1

在 .env.yaml 文件中设置密钥不是一个好主意。实际上,您将能够将其提交到 git,也许在公共仓库中,并且您将以纯文本形式将其设置为函数的环境变量。

如果您将文件设置在存储桶中并在运行时加载它会更好。顺便说一句,您将不会在项目文件中保密。

另一种解决方案是使用 kms 加密密钥并在运行时对其进行解密。这一次,您的项目文件中仍然有秘密,但已加密。

但是,您需要另一个服务帐户做什么?这一项功能还不够?

于 2019-08-17T06:31:15.913 回答
0
GCLOUD_KEY='{"private_key_id":"XXX", "private_key":"YYY",
             "client_email":"ZZZ@ZZZ.COM", "client_id":"ABC123",
             "type":"service_account"}'
于 2019-08-17T05:42:55.460 回答