1.0.4 • Published 8 months ago
rds-connection-pool v1.0.4
Pacote para RDS Proxy (Suporta endpoint leitura / escrita)
Esse pacote foi desenvolvido especialmente para utilização em ambientes Lambda, porém oferece suporte a qualquer projeto utilizando mysql2. Dentre as funcionalidades podemos destacar:
- Cache de Pools: Reutilização de conexões do pool dentro do mesmo container do Lambda (Ambiente aquecido);
- Recomendação de Uso com RDS Proxy: Use o RDS Proxy para gerenciar conexões e reduzir overhead de criação de conexões.
Exemplo de Uso
import { getConnectionPools, ConnectionConfig } from 'rds-connection-pool';
let connectionPools; // Cache global para reutilização em containers quentes
export const handler = async (event: any) => {
try {
// Configuração de endpoints para leitura e escrita
const config: ConnectionConfig = {
read: {
host: 'proxy-read-endpoint.rds.amazonaws.com',
user: 'read_user',
password: 'read_password',
database: 'my_database',
},
write: {
host: 'proxy-write-endpoint.rds.amazonaws.com',
user: 'write_user',
password: 'write_password',
database: 'my_database',
},
};
// Inicializa o pool apenas na primeira execução do container
if (!connectionPools) {
connectionPools = await getConnectionPools('myLambda', config);
}
// Operação de Leitura
const [rows] = await connectionPools.read.query('SELECT * FROM users');
console.log('Dados:', rows);
// Operação de Escrita
await connectionPools.write.query('INSERT INTO users (name) VALUES (?)', ['John Doe']);
console.log('Registro inserido.');
// Retorna sucesso
return {
statusCode: 200,
body: JSON.stringify(rows),
};
} catch (error) {
console.error('Erro na Lambda:', error);
return {
statusCode: 500,
body: JSON.stringify({ error: error.message }),
};
}
};