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