import { Construct } from 'constructs'; import kebabCase from 'lodash.kebabcase'; import { SecretsmanagerSecret, SecretsmanagerSecretVersion, } from '../generated/providers/aws/secretsmanager'; import { getId } from '../utils'; export type SecretConfig = { secretString: string; }; /** * Creates a secret and provides its value in `value`. */ export default class Secret extends Construct { readonly value: string; constructor(scope: Construct, id: string, config: SecretConfig) { super(scope, id); const secretId = getId(id, 'secret'); const secret = new SecretsmanagerSecret(this, secretId, { namePrefix: kebabCase(id), }); const secretVersion = new SecretsmanagerSecretVersion( this, getId(secretId, 'version'), { secretId: secret.id, secretString: config.secretString, } ); this.value = secretVersion.secretString; } }