Как лучше всего разобрать секретную полезную нагрузку на простой объект js? - PullRequest
2 голосов
/ 04 августа 2020

Я создал секрет с помощью облачного веб-интерфейса Google. Я импортирую его прямо из файла .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'
}

Есть ли лучший способ сделать это? Поддерживает ли секретный менеджер Google или gcloud cli JSON формат секретные данные из файла .env? Итак, я могу использовать JSON.parse для анализа строки JSON без использования сторонних пакетов?

...