Files
supabase/scripts/getSecrets.js
2023-12-07 14:58:34 +01:00

44 lines
1.2 KiB
JavaScript

// for internal supabase use only
const fs = require('fs/promises')
const { SecretsManagerClient, GetSecretValueCommand } = require('@aws-sdk/client-secrets-manager')
const { parseArgs } = require('node:util')
const assert = require('assert')
const args = parseArgs({
options: {
secretName: { type: 'string', short: 'n' },
},
})
const secretName = args.values.secretName
assert(secretName, 'secretName is required')
const region = 'ap-southeast-2'
const getSecrets = async (name, region) => {
try {
const secretsmanager = new SecretsManagerClient({ region })
const command = new GetSecretValueCommand({
SecretId: name,
})
const data = await secretsmanager.send(command)
if (!data.SecretString) {
throw new Error('Secrets not found')
}
return JSON.parse(data.SecretString)
} catch (err) {
console.log('Error getting secrets', err)
}
}
// gets secrets from secrets manager and writes it to .env.local file
getSecrets(secretName, region).then(async (secrets) => {
let secretContent = ''
for (const [secretKey, secretValue] of Object.entries(secrets)) {
secretContent += `${secretKey}="${secretValue}"\n`
}
await fs.writeFile('.env.local', secretContent.trim())
})