aws-secret-manager-client
Version:
Modern AWS Secrets Manager client for Node.js with TypeScript support, built on AWS SDK v3
105 lines (102 loc) • 3.44 kB
TypeScript
import { SecretsManagerClientConfig, CreateSecretCommandInput, UpdateSecretCommandInput, RotateSecretCommandInput } from '@aws-sdk/client-secrets-manager';
export { CancelRotateSecretCommandInput, CreateSecretCommandInput, DeleteSecretCommandInput, GetSecretValueCommandInput, RotateSecretCommandInput, UpdateSecretCommandInput } from '@aws-sdk/client-secrets-manager';
import { Logger } from '@aws-sdk/types';
interface SecretsManagerOptions extends SecretsManagerClientConfig {
retryPolicy?: {
maxRetries?: number;
retryDelayOptions?: {
base?: number;
customBackoff?: (retryCount: number) => number;
};
};
timeout?: number;
logger?: Logger;
}
interface SecretValue {
arn?: string | undefined;
name?: string | undefined;
value?: string | undefined;
versionId?: string | undefined;
versionStages?: string[] | undefined;
createdDate?: Date | undefined;
}
declare class SecretsManagerError extends Error {
readonly code?: string | undefined;
readonly statusCode?: number | undefined;
readonly originalError?: Error | undefined;
constructor(message: string, code?: string | undefined, statusCode?: number | undefined, originalError?: Error | undefined);
}
declare class SecretsManagerClient {
private awsClient;
private options;
private logger;
constructor(options?: SecretsManagerOptions);
/**
* Validates that a secret ID is provided and not empty
*/
private validateSecretId;
/**
* Handles AWS SDK errors and converts them to SecretsManagerError
*/
private handleError;
/**
* Retrieves a secret value from AWS Secrets Manager
*/
getSecret(secretId: string, versionId?: string, versionStage?: string): Promise<SecretValue>;
/**
* Retrieves and parses a JSON secret value
*/
getSecretJson<T = unknown>(secretId: string, versionId?: string, versionStage?: string): Promise<T>;
/**
* Creates a new secret in AWS Secrets Manager
*/
createSecret(params: CreateSecretCommandInput): Promise<{
arn: string;
name: string;
versionId: string;
}>;
/**
* Updates an existing secret in AWS Secrets Manager
*/
updateSecret(params: UpdateSecretCommandInput): Promise<{
arn: string;
name: string;
versionId: string;
}>;
/**
* Deletes a secret from AWS Secrets Manager
*/
deleteSecret(secretId: string, forceDeleteWithoutRecovery?: boolean, recoveryWindowInDays?: number): Promise<{
arn: string;
name: string;
deletionDate: Date;
}>;
/**
* Rotates a secret in AWS Secrets Manager
*/
rotateSecret(params: RotateSecretCommandInput): Promise<{
arn: string;
name: string;
versionId: string;
}>;
/**
* Cancels secret rotation in AWS Secrets Manager
*/
cancelRotateSecret(secretId: string): Promise<{
arn: string;
name: string;
versionId: string;
}>;
/**
* Health check method to verify the client can connect to AWS
*/
healthCheck(): Promise<{
status: 'healthy' | 'unhealthy';
message: string;
}>;
/**
* Closes the client connection
*/
close(): Promise<void>;
}
export { SecretValue, SecretsManagerClient, SecretsManagerError, SecretsManagerOptions, SecretsManagerClient as default };