secrets-loader
Load secret data from Google Cloud's Secrets Manager and parse with dotenv.
Installation
From your project directory, run:
yarn add @valora/secrets-loader
or
npm i @valora/secrets-loader
Example usage
import {loadSecret} from '@valora/secrets-loader'
async function loadSecretExample() {
const VERSION = 'latest'
const secretData = await loadSecret(`projects/${YOUR_PROJECT_ID}/secrets/${YOUR_SECRET_NAME}/versions/${VERSION}`)
doStuffWithFoo(secretData.FOO)
doStuffWithUser(secretData.USER)
process.env = { ...process.env, ...secretData }
}
loadSecret
is a thin wrapper for SecretManagerServiceClient.accessSecretVersion
, so you may also find this example helpful.
Local Development
Prerequisites
If you plan to use actual secrets from the Google Cloud Secrets Manager (rather than mocked values) with your local service,
you will need:
Setup
- Log in:
gcloud auth login
- Set your project configuration to whatever project the secrets are located in. For example:
gcloud config set project my-project
. (replace my-project
with your project name, as needed)
Troubleshooting
If you are logged in and have all the necessary permissions, but still getting an error like failed to retrieve auth metadata with error: invalid_grant
when
you try to access secrets, it may be an IDE permissions issue. Try setting your Application Default Credentials (ADC) as described here.
Optional
If you are a JetBrains aficionado, you may find this plugin
enjoyable. It includes a SecretManager toolbar.