@fiftyten/db-connect
Version:
CLI tool for database connections and DynamoDB operations via AWS Session Manager
86 lines • 2.44 kB
TypeScript
export interface ConnectionInfo {
instanceId: string;
sessionManagerEnabled: boolean;
accessMethod: string;
region: string;
securityGroupId: string;
sessionCommand: string;
portForwardCommand: string;
cliToolCommand: string;
sshEnabled?: boolean;
keyName?: string;
note?: string;
}
export interface DatabaseInfo {
DATABASE_HOST: string;
DATABASE_PORT: string;
DATABASE_NAME: string;
DATABASE_USER: string;
DATABASE_SECRET_ARN: string;
}
export declare class DatabaseConnector {
private ec2Client;
private ssmClient;
private secretsClient;
private mfaAuth;
private region;
private mfaAuthenticated;
constructor(region?: string);
/**
* Check if a local port is available
*/
private isPortAvailable;
/**
* Find an available port starting from the given port
*/
private findAvailablePort;
/**
* Handle AWS API calls with automatic MFA authentication
*/
private callWithMfaRetry;
/**
* Get bastion host instance ID by environment
*/
private getBastionInstanceId;
/**
* Get connection information from SSM
*/
private getConnectionInfo;
/**
* Get database information from SSM
*/
private getDatabaseInfo;
/**
* Get database password from Secrets Manager
*/
getDatabasePassword(environment: string, database?: string): Promise<string>;
/**
* Create SSH tunnel to database via Session Manager
*/
createTunnel(environment: string, database?: string, localPort?: number): Promise<void>;
/**
* Connect directly to database via Session Manager
*/
connectDatabase(environment: string, database?: string): Promise<void>;
/**
* SSH into bastion host via Session Manager
*/
sshBastion(environment: string): Promise<void>;
/**
* Show connection information
*/
showInfo(environment: string): Promise<void>;
/**
* List available environments
*/
listEnvironments(): Promise<void>;
/**
* Discover available databases for an environment
*/
discoverDatabases(environment: string): Promise<string[]>;
/**
* Connect to database with automatic tunnel and password retrieval
*/
connectWithPassword(environment: string, database?: string, localPort?: number): Promise<void>;
}
//# sourceMappingURL=database-connector.d.ts.map