Skip to content

@backpack/aws-secrets-manager️ 🔐

Contains some utility classes for AWS Secrets Manager.

Installing

First, ensure you have set up Nexus as private registry needed to use Backpack.

Then, install the package using npm:

bash
npm install @backpack/aws-secrets-manager

Make sure to also install the following AWS SDK client:

bash
npm install @aws-sdk/client-secrets-manager

SecretsManagerService

Utility class to retrieve JSON secrets.

ts
import { SecretsManagerClient } from "@aws-sdk/client-secrets-manager";
import { SecretsManagerService } from "@backpack/aws-secrets-manager";

const client = new SecretsManagerClient();
const service = new SecretsManagerService(client);

const mySecret = service.getJsonSecret("/my/secret-id");
//    ^ inferred as `unknown`, throws error if not found

type MySecret = { foo: string; bar: string; };
const typedSecret = service.getJsonSecret<MySecret>("/my/secret-id");
//    ^ inferred as `MySecret`, throws error if not found

const optionalSecret = service.getJsonSecret<MySecret>("/my/secret-id", { required: false });
//    ^ inferred as `MySecret | undefined`

CachedSecretsManagerService

Extended version of SecretsManagerService that caches values for a certain amount of time.

ts
import { SecretsManagerClient } from "@aws-sdk/client-secrets-manager";
import { CachedSecretsManagerService } from "@backpack/aws-secrets-manager";

const client = new SecretsManagerClient();
const service = new CachedSecretsManagerService(client, {
  cacheExpiryDurationSeconds: 60, // defaults to 300 (5 minutes)
});

// will retrieve the secret from AWS Secret Manager only once:
await service.getJsonSecret("/my/secret-id");
await service.getJsonSecret("/my/secret-id");

// additionally, you can clear the cache when needed:
service.clearCache();