Skip to content

Instantly share code, notes, and snippets.

@deanbarrow
Created July 9, 2020 19:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deanbarrow/c8df24e822fbaca5dd4c86c4205d5831 to your computer and use it in GitHub Desktop.
Save deanbarrow/c8df24e822fbaca5dd4c86c4205d5831 to your computer and use it in GitHub Desktop.
Load AWS Secrets Manager into process.env environment variables
const AWS = require('aws-sdk')
const getSecretValue = async () => {
const region = process.env.REGION
const env = process.env.ENV || 'dev'
const secretPath = env === 'prod' ? 'prod' : 'dev'
const secretName = `[PROJECT]/amplify-${secretPath}/${env}`
var client = new AWS.SecretsManager({ region })
return new Promise((resolve, reject) => {
client.getSecretValue({ SecretId: secretName }, function(err, data) {
if (err) {
reject(err)
} else {
let secret
if ('SecretString' in data) {
secret = data.SecretString
} else {
let buff = new Buffer(data.SecretBinary, 'base64')
secret = buff.toString('ascii')
}
resolve(JSON.parse(secret))
}
})
})
}
const setSecretEnvs = async () => {
const secrets = await getSecretValue()
Object.keys(secrets).forEach(function(key) {
process.env[key] = secrets[key]
})
return secrets
}
module.exports = {
setSecretEnvs
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment