import { GetSecretValueCommand, SecretsManagerClient, } from '@aws-sdk/client-secrets-manager'; import CloudProviderBase from './CloudProviderBase'; export interface ICredentials { accessKeyId: string; secretAccessKey: string; sessionToken?: string; } export default class AwsSecretsManagerProvider extends CloudProviderBase { private secretsManagerClient: SecretsManagerClient; constructor(private secretId: string, region: string, credentials?: ICredentials) { super(); this.secretsManagerClient = new SecretsManagerClient({ region: region, credentials, }); } public async getAll(): Promise> { const secretData = await this.secretsManagerClient.send( new GetSecretValueCommand({ SecretId: this.secretId, }) ); const formattedSecretData = JSON.parse(secretData.SecretString ?? ''); return formattedSecretData; } protected async getSecretData(secretName: string) { const formattedSecretData = await this.getAll(); return formattedSecretData[secretName]; } }