2

我使用谷歌云网络用户界面创建了一个秘密。我直接从.env文件中导入它。现在我想在云功能中使用它们。

代码在这里:

const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
const dotenv = require('dotenv');

const secretManagerServiceClient = new SecretManagerServiceClient();
const name = 'projects/<my_project_id>/secrets/workflow/versions/latest';

exports.testSecretManager = async (req, res) => {
  const [version] = await secretManagerServiceClient.accessSecretVersion({ name });
  const payload = version.payload.data.toString();
  console.debug(`Payload: ${payload}`);
  const buf = Buffer.from(payload);
  const secrets = dotenv.parse(buf);
  console.debug('secrets:', secrets);
  res.sendStatus(200);
};

version.payload.data.toString()会给我一个.env像这样的原始文件字符串:

APP_PORT=3001
POSTGRES_HOST=db

我需要将其解析为 js 普通对象,以便可以通过对象属性(如payload.data.APP_PORT. 现在,我使用dotenv.parse将原始字符串解析为 js 普通对象。输出如下:

{
  APP_PORT: 3001,
  POSTGRES_HOST: '127.0.0.1'
}

有一个更好的方法吗?谷歌秘密管理器或gcloudcli 是否支持从文件创建 JSON 格式的秘密有效负载.env?所以我可以JSON.parse在不使用任何第三方包的情况下解析 JSON 字符串吗?

4

0 回答 0