paeire / laravel-rds-proxy-iam
There is no license information available for the latest version (v1.1.0) of this package.
v1.1.0
2026-02-25 01:08 UTC
Requires
- php: ^8.1
- aws/aws-sdk-php: ^3.300
- illuminate/database: ^10|^11|^12
- illuminate/support: ^10|^11|^12
README
Librería para conectar Laravel a AWS RDS Proxy usando IAM DB Auth (sin credenciales estáticas).
Instalación
composer require paeire/laravel-rds-proxy-iam
Configuración base
En config/database.php:
'connections' => [ 'mysql' => [ 'driver' => 'mysql-iam-proxy', 'host' => env('DB_HOST'), 'port' => env('DB_PORT', 3306), // puerto local (túnel/proxy) 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), // host/port usados para firmar el token IAM 'token_host' => env('DB_TOKEN_HOST', env('DB_HOST')), 'token_port' => env('DB_TOKEN_PORT', 3306), 'aws_region' => env('AWS_REGION', 'us-east-1'), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', ], ],
Orden de carga (importante)
El provider ahora registra el driver durante register() y engancha beforeResolving/afterResolving para cargarse lo antes posible.
Si tu aplicación resuelve DB muy temprano (en otro provider), registra este provider antes:
- Laravel 11: en
bootstrap/providers.php, colocaPaeire\RdsProxyIam\IamServiceProvider::classal inicio. - Laravel 10 o menor: en
config/app.php, colócalo antes de providers que usen DB enregister().
Seguridad y utilidades incluidas
- Ya no se registran
passwordni token IAM en logs. - Validación estricta de configuración requerida.
- Soporte TLS con
ssl_cay verificación (ssl_verify, defaulttrue). connect_timeout(default5).force_readonlypara reforzar sesión de solo lectura.session_init_statementspara ejecutar SQL al abrir conexión.
Opciones soportadas
Se pueden definir en la conexión de Laravel y, como fallback, por env:
host/DB_HOSTport/DB_PORTdatabase/DB_DATABASEusername/DB_USERNAMEtoken_host/DB_TOKEN_HOSTtoken_port/DB_TOKEN_PORTaws_region/AWS_REGIONssl_ca/DB_SSL_CAssl_verify/DB_SSL_VERIFY(truepor defecto)connect_timeout/DB_CONNECT_TIMEOUT(5por defecto)force_readonly/DB_FORCE_READONLYsession_init_statements/DB_SESSION_INIT_STATEMENTS(string con;o array)enable_cleartext_plugin(truepor defecto)