@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();