

# Amazon RDS Proxy
<a name="rds-proxy"></a>

Con Amazon RDS Proxy puede permitir a las aplicaciones agrupar y compartir conexiones de base de datos para mejorar su capacidad de escala. RDS Proxy hace que las aplicaciones sean más resistentes a los errores de base de datos al conectarse automáticamente a una instancia de base de datos en espera mientras se preservan las conexiones de las aplicaciones. Con RDS Proxy, puede aplicar la autenticación de AWS Identity and Access Management (IAM) a los clientes que se conectan al proxy, y el proxy puede conectarse a las bases de datos mediante la autenticación de bases de datos de IAM o las credenciales almacenadas en AWS Secrets Manager. 

![\[Información general sobre cómo se conectan las aplicaciones a RDS Proxy\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/Proxy-Overview.png)


 Con RDS Proxy puede gestionar aumentos imprevistos en el tráfico de base de datos. De lo contrario, estas sobrecargas podrían causar problemas debido a la suscripción excesiva de conexiones o a la creación de nuevas conexiones a un ritmo rápido. RDS Proxy establece un grupo de conexiones de base de datos y reutiliza las conexiones de este grupo. Este enfoque evita la sobrecarga de memoria y de CPU que supone abrir una nueva conexión de base de datos cada vez. Para proteger una base de datos frente a un exceso de suscripciones, puede controlar el número de conexiones de base de datos que se crean. 

 RDS Proxy pone en cola o limita las conexiones de aplicaciones que no se pueden atender de inmediato desde el grupo de conexiones. Aunque las latencias pueden aumentar, la aplicación puede seguir ajustando la escala sin fallar bruscamente ni sobrecargar la base de datos. Si las solicitudes de conexión superan los límites especificados, RDS Proxy rechaza las conexiones de aplicación (es decir, se desprende de la carga). Al mismo tiempo, mantiene un rendimiento predecible para la carga que RDS puede servir con la capacidad disponible. 

![\[Una vista detallada de cómo se conectan las aplicaciones a RDS Proxy y de los tipos de conexiones involucradas.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/Proxy-detail.png)


 Puede reducir la sobrecarga para procesar credenciales y establecer una conexión segura para cada nueva conexión. RDS Proxy puede gestionar parte de ese trabajo en nombre de la base de datos. 

 RDS Proxy es totalmente compatible con las versiones de motor admitidas. Puede habilitar RDS Proxy para la mayoría de las aplicaciones sin cambios de código. 

**Topics**
+ [

## Disponibilidad en regiones y versiones
](#rds-proxy.RegionVersionAvailability)
+ [

## Cuotas y limitaciones de RDS Proxy
](#rds-proxy.limitations)
+ [

# Planificación del lugar de uso de RDS Proxy
](rds-proxy-planning.md)
+ [

# Conceptos y terminología de RDS Proxy
](rds-proxy.howitworks.md)
+ [

# Introducción al proxy de RDS
](rds-proxy-setup.md)
+ [

# Administración de un RDS Proxy
](rds-proxy-managing.md)
+ [

# Trabajo con puntos de enlace del proxy de Amazon RDS
](rds-proxy-endpoints.md)
+ [

# Supervisión de las métricas de RDS Proxy con Amazon CloudWatch
](rds-proxy.monitoring.md)
+ [

# Trabajo con eventos de RDS Proxy
](rds-proxy.events.md)
+ [

# Solución de problemas de RDS Proxy
](rds-proxy.troubleshooting.md)
+ [

# Uso del proxy de RDS con AWS CloudFormation
](rds-proxy-cfn.md)

## Disponibilidad en regiones y versiones
<a name="rds-proxy.RegionVersionAvailability"></a>

La disponibilidad de las características varía según las versiones específicas de cada motor de base de datos y entre Regiones de AWS. Para obtener más información sobre la disponibilidad en versiones y regiones de Amazon RDS con RDS Proxy, consulte [Regiones y motores de base de datos para Amazon RDS Proxy](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSProxy.md).

## Cuotas y limitaciones de RDS Proxy
<a name="rds-proxy.limitations"></a>

 Las siguientes cuotas y limitaciones se aplican a RDS Proxy: 
+  Cada ID de Cuenta de AWS está limitado a 20 proxies. Si su aplicación requiere más proxies, solicite un aumento a través de la página **Service Quotas** dentro de la Consola de administración de AWS. En la página **Service Quotas**, seleccione **Amazon Relational Database Service (Amazon RDS**) y busque **Proxies** para solicitar un aumento de cuota. AWS puede aumentar automáticamente su cuota o, en espera de la revisión de su solicitud, mediante Soporte.
+ Cada proxy puede tener hasta 200 secretos de Secrets Manager asociados, lo que limita las conexiones hasta a 200 cuentas de usuario diferentes cuando se utilizan secretos. 
+  Cada proxy tiene un punto de conexión predeterminado que se aprovisiona solo en dos zonas de disponibilidad seleccionadas de las subredes configuradas del proxy. Si se configuran subredes en más de dos zonas de disponibilidad, se seleccionarán dos de ellas. 
+  Puede agregar hasta 20 puntos de conexión de proxy adicionales para cada proxy. Estos puntos de conexión adicionales se aprovisionan en todas las zonas de disponibilidad especificadas durante su creación. Puede crear, ver, modificar y eliminar estos puntos de conexión. 
+ Para las instancias de base de datos de RDS en configuraciones de reproducción, solo puede asociar un proxy con la instancia de base de datos de escritura, no con una réplica de lectura.
+ Su RDS Proxy debe estar en la misma nube privada virtual (VPC) que la base de datos. Aunque se puede acceder públicamente a la base de datos, no sucede lo mismo con el proxy. Por ejemplo, si va a crear prototipos de base de datos en un host local, no puede conectarse a su proxy, a menos que configure los requisitos de red necesarios para permitir la conexión al proxy. Esto es porque el host local está fuera de la VPC del proxy. 
+  No se puede utilizar RDS Proxy con una VPC que tenga su tenencia establecida en `dedicated`. 
+  No se puede usar RDS Proxy en una VPC que tenga habilitados los controles de cifrado con `Enforce Mode`. 
+ Para tipos de redes de puntos de conexión de IPv6, configure la VPC y las subredes para admitir solo IPv6. Para los tipos de red de conexión de destino de IPv4 e IPv6, configure la VPC y las subredes para que admitan el modo de doble pila. 
+ Si utiliza RDS Proxy con una instancia de base de datos de RDS que tenga habilitada la autenticación de IAM, el proxy puede conectarse a la base de datos mediante autenticación de IAM o credenciales almacenadas en Secrets Manager. Los clientes que se conecten al proxy deben autenticarse con credenciales de IAM. Para obtener instrucciones de configuración detalladas, consulte [Configuración de credenciales de base de datos para RDS Proxy](rds-proxy-secrets-arns.md) y [Configuración de la autenticación de IAM para RDS Proxy](rds-proxy-iam-setup.md)
+  No se puede usar el proxy de RDS con DNS personalizados cuando se utiliza la validación de nombres de host SSL. 
+  Cada proxy se puede asociar con una única instancia de base de datos de destino. Sin embargo, puede asociar varios proxies con la misma instancia de base de datos.
+ Cualquier instrucción con un tamaño de texto superior a 16 KB hace que el proxy fije la sesión a la conexión actual.
+ Algunas regiones tienen restricciones de zona de disponibilidad (AZ) que debe tener en cuenta al crear el proxy. La región Este de EE. UU. (Norte de Virginia) no admite RDS Proxy en la zona de disponibilidad `use1-az3`. La región Oeste de EE. UU. (Norte de California) no admite RDS Proxy en la zona de disponibilidad `usw1-az2`. Al seleccionar subredes al crear el proxy, asegúrese de no seleccionar subredes en las zonas de disponibilidad mencionadas anteriormente. 
+ Actualmente, RDS Proxy no admite claves de contexto de condición globales.

  Para obtener más información sobre las claves de condición globales, consulte [Claves de contexto de condición globales de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*.
+ No se puede utilizar RDS Proxy con RDS Custom para SQL Server.
+ Para reflejar cualquier modificación del grupo de parámetros de la base de datos en el proxy, es necesario reiniciar la instancia aunque decida aplicar los cambios inmediatamente. Es necesario reiniciar todo el clúster para los parámetros de clúster.
+ Su proxy crea automáticamente el usuario de base de datos `rdsproxyadmin` cuando registra un destino de proxy. Este es un usuario protegido que es esencial para la funcionalidad del proxy. Debe evitar cualquier alteración del usuario de `rdsproxyadmin` de cualquier forma. Eliminar o modificar el usuario de `rdsproxyadmin` o sus permisos puede provocar la total falta de disponibilidad del proxy en la aplicación.

Para conocer las limitaciones adicionales de cada motor de base de datos, consulte las secciones siguientes:
+ [Limitaciones adicionales para RDS para MariaDB](#rds-proxy.limitations-mdb)
+ [Limitaciones adicionales para RDS para Microsoft SQL Server](#rds-proxy.limitations-ms)
+ [Limitaciones adicionales para RDS para MySQL](#rds-proxy.limitations-my)
+ [Limitaciones adicionales para RDS para PostgreSQL](#rds-proxy.limitations-pg)

### Limitaciones adicionales para RDS para MariaDB
<a name="rds-proxy.limitations-mdb"></a>

 Las siguientes limitaciones adicionales se aplican a RDS Proxy con RDS para MariaDB:
+  Actualmente, todos los proxies escuchan en el puerto 3306 para MariaDB. Los proxies todavía se conectan a la base de datos mediante el puerto especificado en la configuración de la base de datos. 
+ No se puede usar RDS Proxy con bases de datos MariaDB autoadministradas en instancias Amazon EC2.
+ No se puede usar RDS Proxy con una instancia de base de datos de RDS para MariaDB que tenga el parámetro `read_only` en su grupo de parámetros de base de datos establecido en `1`.
+ RDS Proxy no admite el modo comprimido de MariaDB. Por ejemplo, no admite la compresión utilizada por las opciones `--compress` o `-C` del comando `mysql`.
+ Algunas instrucciones y funciones SQL pueden cambiar el estado de conexión sin causar fijación. Para conocer el comportamiento de fijación más actual, consulte [Cómo evitar la fijación de RDS Proxy](rds-proxy-pinning.md).
+ MariaDB no admite el complemento `auth_ed25519` de MariaDB.
+ El proxy RDS no admite la versión 1.3 de seguridad de la capa de transporte (TLS) para las bases de datos de MariaDB.
+ Las conexiones a bases de datos que procesan un comando `GET DIAGNOSTIC` pueden devolver información inexacta cuando RDS Proxy vuelve a utilizar la misma conexión de base de datos para ejecutar otra consulta. Esto puede ocurrir cuando RDS Proxy multiplexa las conexiones de bases de datos. Para obtener más información, consulte [Información general de los conceptos de RDS Proxy](rds-proxy.howitworks.md#rds-proxy-overview).
+ Actualmente, RDS Proxy no admite la opción `caching_sha2_password` para `ClientPasswordAuthType` para MariaDB.

**importante**  
 Para proxies asociados con bases de datos de MariaDB, no establezca el parámetro de configuración `sql_auto_is_null` en `true` o un valor distinto de cero en la consulta de inicialización. Si lo hace, es posible que la aplicación se comporte incorrectamente. 

### Limitaciones adicionales para RDS para Microsoft SQL Server
<a name="rds-proxy.limitations-ms"></a>

 Las siguientes limitaciones adicionales se aplican a RDS Proxy con RDS para Microsoft SQL Server:
+ El número de secretos de Secrets Manager que necesita crear para un proxy depende de la intercalación que utilice la instancia de base de datos. Por ejemplo, supongamos que la instancia de base de datos utiliza una intercalación que distingue mayúsculas Si su aplicación acepta tanto «Admin» como «admin», su proxy necesita dos secretos distintos. Para obtener más información sobre colación en SQL Server, consulte la documentación de [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver16).
+ RDS Proxy no admite conexiones que utilizan Active Directory.
+ No puede usar la autenticación de IAM con clientes que no admitan propiedades de token. Para obtener más información, consulte [Consideraciones para conectarse a Microsoft SQL Server](rds-proxy-connecting.md#rds-proxy-connecting-sqlserver).
+ Los resultados de `@@IDENTITY`, `@@ROWCOUNT` y `SCOPE_IDENTITY` no siempre son precisos. Como solución alternativa, recupere sus valores en la misma sentencia de sesión para asegurarse de que devuelven la información correcta.
+ Si la conexión usa varios conjuntos de resultados activos (MARS), RDS Proxy no ejecuta las consultas de inicialización. Para obtener más información sobre MARS, consulte la documentación de [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/native-client/features/using-multiple-active-result-sets-mars?view=sql-server-ver16).
+ Actualmente, RDS Proxy no admite instancias de base de datos de RDS para SQL Server que se ejecuten en la versión principal de *SQL Server 2022*.
+ RDS Proxy no admite instancias de base de datos de RDS para SQL Server que se ejecuten en la versión principal de *SQL Server 2014*.
+ RDS Proxy no admite aplicaciones cliente que no puedan gestionar varios mensajes de respuesta en un registro TLS.
+ RDS Proxy no admite la autenticación de IAM integral para RDS para SQL Server.

### Limitaciones adicionales para RDS para MySQL
<a name="rds-proxy.limitations-my"></a>

 Las siguientes limitaciones adicionales se aplican a RDS Proxy con bases de datos RDS para MySQL:
+ La compatibilidad con RDS Proxy para la autenticación de `caching_sha2_password` requiere una conexión segura (TLS).
+ Se sabe que `caching_sha2_password` presenta problemas de compatibilidad con RDS Proxy si se usan determinadas versiones del controlador go-sql.
+ Cuando se utiliza el controlador C de MySQL 8.4, la API `mysql_stmt_bind_named_param` puede formar paquetes con un formato incorrecto si el recuento de parámetros supera el recuento de marcadores de posición en una instrucción preparada. Esto da como resultado respuestas incorrectas. Para obtener más información, consulte [MySQL bug report](https://bugs.mysql.com/bug.php?id=116860&thanks=4).
+ Actualmente, todos los proxies escuchan en el puerto 3306 para MySQL. Los proxies todavía se conectan a la base de datos mediante el puerto especificado en la configuración de la base de datos. 
+  No puede usar RDS Proxy con bases de datos MySQL autoadministradas en instancias EC2.
+  No se puede usar RDS Proxy con una instancia de base de datos RDS para MySQL que tenga el parámetro `read_only` en su grupo de parámetros de base de datos establecido en `1`.
+ RDS Proxy no admite el modo comprimido de MySQL. Por ejemplo, no admite la compresión utilizada por las opciones `--compress` o `-C` del comando `mysql`.
+ Las conexiones a bases de datos que procesan un comando `GET DIAGNOSTIC` pueden devolver información inexacta cuando RDS Proxy vuelve a utilizar la misma conexión de base de datos para ejecutar otra consulta. Esto puede ocurrir cuando RDS Proxy multiplexa las conexiones de bases de datos.
+ Algunas instrucciones y funciones SQL, como `SET LOCAL`, pueden cambiar el estado de conexión sin producir una fijación. Para conocer el comportamiento de fijación más actual, consulte [Cómo evitar la fijación de RDS Proxy](rds-proxy-pinning.md).
+ No se admite el uso de la función `ROW_COUNT()` en una consulta de varias instrucciones.
+ RDS Proxy no admite aplicaciones cliente que no puedan gestionar varios mensajes de respuesta en un registro TLS.
+ RDS Proxy no admite las contraseñas duales de MySQL.
+ Es posible que el proxy de RDS no funcione según lo esperado al configurar el parámetro `init_connect` en el grupo de parámetros de la base de datos de RDS para establecer las variables de estado de la sesión. En su lugar, establezca la consulta de inicialización para que el proxy ejecute las instrucciones de inicialización de la sesión cuando utilice el proxy para conectarse a la base de datos.

**importante**  
 Para proxies asociados con bases de datos de MySQL, no establezca el parámetro de configuración `sql_auto_is_null` en `true` o un valor distinto de cero en la consulta de inicialización. Si lo hace, es posible que la aplicación se comporte incorrectamente. 

### Limitaciones adicionales para RDS para PostgreSQL
<a name="rds-proxy.limitations-pg"></a>

 Las siguientes limitaciones adicionales se aplican a RDS Proxy con bases de datos de RDS para PostgreSQL:
+ RDS Proxy no admite los filtros de fijación de sesión para PostgreSQL.
+  Actualmente, todos los proxies escuchan en el puerto 5432 para PostgreSQL.
+ Para PostgreSQL, RDS Proxy no admite actualmente la cancelación de una consulta por parte de un cliente mediante la emisión de `CancelRequest`. Este es el caso, por ejemplo, cuando se cancela una consulta de larga duración en una sesión psql interactiva con Ctrl \$1 C. 
+  Los resultados de la función de PostgreSQL [lastval](https://www.postgresql.org/docs/current/functions-sequence.html) no siempre son precisos. Como alternativa, utilice la instrucción [INSERT](https://www.postgresql.org/docs/current/sql-insert.html) con la cláusula `RETURNING`.
+ Actualmente, RDS Proxy no admite el modo de replicación en streaming.
+ Con RDS para PostgreSQL 16, las modificaciones del valor `scram_iterations` afectan exclusivamente al proceso de autenticación entre el proxy y la base de datos. En concreto, si configura `ClientPasswordAuthType` como `scram-sha-256`, las personalizaciones que se realicen en el valor `scram_iterations` no influirán en la autenticación mediante contraseña de cliente a proxy. En su lugar, el valor de iteración para la autenticación de contraseña de cliente a proxy se fija en 4096.
+ La base de datos de `postgres` predeterminada debe existir en la instancia de RDS para PostgreSQL para que funcione RDS Proxy. No elimine esta base de datos aunque la aplicación utilice bases de datos diferentes.
+ Si usa `ALTER ROLE` para cambiar el rol de usuario con `SET ROLE`, es posible que las conexiones posteriores con ese usuario al proxy no usen esta configuración de rol si esas conexiones se encuentran con alguna fijación. Para evitarlo, cuando utilice un proxy, emplee `SET ROLE` en la consulta de inicialización del proxy. Para obtener más información, consulte **Consulta de inicialización** en [Creación de un proxy para Amazon RDS](rds-proxy-creating.md).

**importante**  
En el caso de los proxies existentes con bases de datos de PostgreSQL, si modifica la autenticación de la base de datos para utilizar únicamente `SCRAM`, el proxy dejará de estar disponible durante un máximo de 60 segundos. Para evitar este problema, lleve a cabo alguna de las siguientes operaciones:  
Asegúrese de que la base de datos permita la autenticación `SCRAM` y `MD5`.
Para utilizar únicamente la autenticación `SCRAM`, cree un nuevo proxy, migre el tráfico de la aplicación al nuevo proxy y, a continuación, elimine el proxy previamente asociado a la base de datos.

# Planificación del lugar de uso de RDS Proxy
<a name="rds-proxy-planning"></a>

 Puede determinar cuáles de sus instancias de base de datos, clústeres y aplicaciones podrían beneficiarse más del uso de RDS Proxy. Para ello, tenga en cuenta estos factores: 
+  Cualquier instancia de base de datos que encuentre errores de "demasiadas conexiones" es un buen candidato para asociarse con un proxy. Esto suele caracterizarse por un valor alto de la métrica `ConnectionAttempts` de CloudWatch. El proxy permite a las aplicaciones abrir muchas conexiones de cliente, mientras que el proxy administra un número menor de conexiones de larga duración a la instancia de base de datos. 
+  Para instancias de base de datos que utilizan clases de instancias de AWS más pequeñas, como T2 o T3, el uso de un proxy puede ayudar a evitar condiciones de falta de memoria. También puede ayudar a reducir la sobrecarga de CPU para establecer conexiones. Estas condiciones pueden producirse cuando se trata de un gran número de conexiones. 
+  Puede monitorear ciertas métricas de Amazon CloudWatch para determinar si una instancia de base de datos se acerca a ciertos tipos de límite. Estos límites son para el número de conexiones y la memoria asociados a la administración de conexiones. También puede monitorear ciertas métricas de CloudWatch para determinar si una instancia de base de datos está controlando muchas conexiones de corta duración. Abrir y cerrar tales conexiones puede imponer una sobrecarga de rendimiento en su base de datos. Para obtener información sobre las métricas que se van a monitorizar, consulte [Supervisión de las métricas de RDS Proxy con Amazon CloudWatchSupervisión de RDS Proxy con CloudWatch](rds-proxy.monitoring.md). 
+  AWS LambdaLas funciones de también pueden ser buenas candidatas para usar un proxy. Estas funciones hacen frecuentes conexiones cortas a la base de datos que aprovechan el grupo de conexiones que ofrece RDS Proxy. Puede aprovechar cualquier autenticación de IAM que ya tenga para funciones de Lambda, en lugar de administrar las credenciales de la base de datos en el código de la aplicación de Lambda. 
+  Las aplicaciones que suelen abrir y cerrar un gran número de conexiones de base de datos y no tienen mecanismos integrados de agrupación de conexiones son buenas candidatas para usar un proxy. 
+  Las aplicaciones que mantienen un gran número de conexiones abiertas durante largos períodos suelen ser buenas candidatas para usar un proxy. Las aplicaciones en sectores como el software como servicio (SaaS) o el comercio electrónico a menudo minimizan la latencia de las solicitudes de base de datos al dejar las conexiones abiertas. Con RDS Proxy, una aplicación puede mantener más conexiones abiertas que cuando se conecta directamente a la instancia de base de datos. 
+  Es posible que no haya adoptado la autenticación de IAM y Secrets Manager debido a la complejidad de configurar dicha autenticación para todas las instancias de base de datos. El proxy puede aplicar las directivas de autenticación para conexiones de cliente para aplicaciones concretas. Puede aprovechar cualquier autenticación de IAM que ya tenga para funciones de Lambda, en lugar de administrar las credenciales de la base de datos en el código de la aplicación de Lambda. 
+  RDS Proxy puede ayudar a que las aplicaciones sean más resilientes y transparentes ante los errores de base de datos. RDS Proxy evita las cachés del Sistema de nombres de dominio (DNS) a fin de reducir los tiempos de conmutación por error hasta en un 66 % para las instancias de base de datos de Amazon RDS Multi-AZ. RDS Proxy también dirige automáticamente el tráfico a una nueva instancia de base de datos y conserva las conexiones de la aplicación. Esto hace que la conmutación por error sea más transparente para las aplicaciones.

# Conceptos y terminología de RDS Proxy
<a name="rds-proxy.howitworks"></a>

 Puede simplificar la administración de conexiones de las instancias de base de datos de Amazon RDS usando RDS Proxy. 

 RDS Proxy controla el tráfico de red entre la aplicación cliente y la base de datos. Lo hace de una manera activa, comprendiendo primero el protocolo de base de datos. A continuación, ajusta su comportamiento en función de las operaciones SQL de la aplicación y los conjuntos de resultados de la base de datos. 

 RDS Proxy reduce la sobrecarga de memoria y CPU para la administración de conexiones en la base de datos. La base de datos necesita menos memoria y recursos de CPU cuando las aplicaciones abren muchas conexiones simultáneas. Tampoco requiere lógica en las aplicaciones para cerrar y volver a abrir conexiones que permanecen inactivas durante mucho tiempo. Del mismo modo, requiere menos lógica de aplicación para restablecer conexiones en caso de un problema de base de datos. 

 La infraestructura para RDS Proxy está altamente disponible e implementada en varias zonas de disponibilidad (AZ). El cálculo, la memoria y el almacenamiento de RDS Proxy son independientes de las instancias de base de datos de RDS. Esta separación ayuda a reducir la sobrecarga en los servidores de bases de datos, de modo que puedan dedicar sus recursos a servir cargas de trabajo de base de datos. Los recursos informáticos de RDS Proxy no tienen servidor y se escalan automáticamente en función de la carga de trabajo de la base de datos. 

**Topics**
+ [

## Información general de los conceptos de RDS Proxy
](#rds-proxy-overview)
+ [

## Grupo de conexiones
](#rds-proxy-connection-pooling)
+ [

## Seguridad de RDS Proxy
](#rds-proxy-security)
+ [

## Conmutación por error
](#rds-proxy-failover)
+ [

## Transacciones
](#rds-proxy-transactions)

## Información general de los conceptos de RDS Proxy
<a name="rds-proxy-overview"></a>

 RDS Proxy gestiona la infraestructura para llevar a cabo la agrupación de conexiones y las demás características descritas en las siguientes secciones. Puede ver los proxies representados en la consola de RDS en la página **Proxies**. 

Cada proxy gestiona las conexiones a una única instancia de base de datos de RDS. El proxy determina automáticamente la instancia de escritor actual para la instancia o clúster de base de datos de RDS Multi-AZ.

 Las conexiones que un proxy mantiene abiertas y disponibles para que las aplicaciones de base de datos puedan utilizar el *grupo de conexiones*. 

 De forma predeterminada, RDS Proxy puede reutilizar una conexión después de cada transacción en la sesión. Esta reutilización en el nivel de transacción se denomina *multiplexación*. Cuando RDS Proxy elimina temporalmente una conexión del grupo de conexiones para reutilizarla, esa operación se denomina *préstamo* de la conexión. Cuando sea seguro hacerlo, RDS Proxy devuelve esa conexión al grupo de conexiones. 

 En algunos casos, RDS Proxy no puede estar seguro de que sea seguro volver a utilizar una conexión de base de datos fuera de la sesión actual. En estos casos, mantiene la sesión en la misma conexión hasta que finalice la sesión. Este comportamiento de reserva se denomina *fijación*. 

Un proxy tiene un punto de conexión predeterminado. Se conecta a este punto de conexión cuando trabaja con una instancia de base de datos de Amazon RDS. Lo hace en lugar de conectarse al punto de conexión de lectura y escritura que se conecta directamente a la instancia. Para los clústeres de bases de datos de RDS, también puede crear puntos de conexión de lectura o escritura y de solo lectura adicionales. Para obtener más información, consulte [Información general de los puntos de enlace de proxy](rds-proxy-endpoints.md#rds-proxy-endpoints-overview). 

 Por ejemplo, aún puede conectarse al punto de enlace del clúster para conexiones de lectura y escritura sin agrupación de conexiones. Aún puede conectarse al punto de conexión del lector para conexiones de solo lectura con equilibrio de carga. Aún puede conectarse a los puntos de conexión de instancia para el diagnóstico y la resolución de problemas de instancias de base de datos específicas dentro de un clúster. Si utiliza otros servicios de AWS como AWS Lambda para conectarse a bases de datos de RDS, cambie la configuración de conexión para utilizar el punto de conexión del proxy. Por ejemplo, especifique el punto de conexión del proxy para permitir que las funciones de Lambda accedan a la base de datos mientras aprovechan la funcionalidad del RDS Proxy. 

 Cada proxy contiene un grupo de destino. Este *grupo de destino* abarca la instancia de base de datos de RDS que se puede conectar con el proxy. La instancia de base de datos de RDS asociada con un proxy se denomina *destino* de ese proxy. Para mayor comodidad, al crear un proxy a través de la consola, RDS Proxy también crea el grupo de destino correspondiente y registra los destinos asociados automáticamente. 

 Una *familia de motores* es un conjunto relacionado de motores de base de datos que utilizan el mismo protocolo de base de datos. Elija la familia de motores para cada proxy que cree. 

## Grupo de conexiones
<a name="rds-proxy-connection-pooling"></a>

Cada proxy realiza la agrupación de conexiones por separado para la instancia de escritor y de lector de la base de datos de RDS asociada. La *agrupación de conexiones* es una optimización que reduce la sobrecarga asociada a la apertura y el cierre de conexiones y al mantenimiento de muchas conexiones abiertas simultáneamente. Esta sobrecarga incluye la memoria necesaria para gestionar cada nueva conexión. También implica una sobrecarga de la CPU para cerrar cada conexión y abrir una nueva. Los ejemplos incluyen el protocolo de enlace Transport Layer Security/Secure Sockets Layer (TLS/SSL), autenticación, capacidades de negociación, etc. La agrupación de conexiones simplifica la lógica de la aplicación. No es necesario escribir código de aplicación para minimizar el número de conexiones abiertas simultáneas. 

 Cada proxy también realiza multiplexación de conexión, también conocida como reutilización de la conexión. Con la *multiplexación*, el proxy de RDS realiza todas las operaciones de una transacción mediante una conexión de base de datos subyacente. A continuación, RDS puede usar una conexión diferente para la siguiente transacción. Puede abrir muchas conexiones simultáneas al proxy y el proxy mantiene un número menor de conexiones abiertas a la instancia de base de datos o al clúster. Al hacerlo, se minimiza aún más la sobrecarga de memoria para las conexiones en el servidor de base de datos. Esta técnica también reduce la posibilidad de errores de «demasiadas conexiones». 

## Seguridad de RDS Proxy
<a name="rds-proxy-security"></a>

 El proxy de RDS utiliza los mecanismos de seguridad de RDS existentes, como TLS/SSL e AWS Identity and Access Management (IAM). Para obtener información general acerca de esas características de seguridad, consulte [Seguridad en Amazon RDS ](UsingWithRDS.md). Además, asegúrese de familiarizarse con la forma en la que RDS trabaja con autenticación, autorización y otras áreas de seguridad. 

 RDS Proxy puede actuar como una capa adicional de seguridad entre las aplicaciones cliente y la base de datos subyacente. Por ejemplo, puede conectarse al proxy mediante TLS 1.3, incluso si la instancia de base de datos subyacente admite una versión más antigua de TLS. Puede conectarse al proxy mediante un rol de IAM, incluso si el proxy se conecta a la base de datos mediante el método de autenticación de usuario y contraseña de base de datos. Mediante esta técnica, puede imponer requisitos de autenticación sólidos para las aplicaciones de base de datos sin un esfuerzo de migración costoso para las propias instancias de base de datos. 

Puede usar los siguientes métodos de autenticación con RDS Proxy:
+ **Credenciales de base de datos**
+ **Autenticación de IAM estándar**
+ **Autenticación de IAM integral**

### Uso de IAM con RDS Proxy
<a name="rds-proxy-security.IAM"></a>

RDS Proxy ofrece dos métodos de autenticación de IAM:
+ **Autenticación de IAM estándar**: aplique la autenticación de IAM para las conexiones al proxy mientras el proxy se conecta a la base de datos mediante las credenciales almacenadas en Secrets Manager. Esto aplica la autenticación de IAM para el acceso a la base de datos incluso si las bases de datos utilizan la autenticación de contraseña nativa. El proxy recupera las credenciales de la base de datos de Secrets Manager y gestiona la autenticación en la base de datos en nombre de la aplicación.
+ **Autenticación de IAM integral**: aplica la autenticación de IAM a las conexiones directamente desde las aplicaciones a la base de datos a través del proxy. La autenticación de IAM integral simplifica la configuración de seguridad y evita la administración de credenciales de bases de datos en Secrets Manager. Esta capa adicional de seguridad impone un control de acceso basado en IAM desde la aplicación de cliente a la base de datos.

Para usar la autenticación de IAM estándar, configure el proxy para que utilice los secretos de Secrets Manager para la autenticación y habilite la autenticación de IAM para las conexiones de los clientes. Las aplicaciones se autentican en el proxy mediante IAM, mientras que el proxy se autentica en la base de datos con las credenciales recuperadas de Secrets Manager.

Para utilizar la autenticación de IAM integral, configure el proxy para que utilice la autenticación de IAM al establecer el esquema de autenticación predeterminado al crear o modificar el proxy.

Para la autenticación de IAM integral, debe actualizar el rol de IAM asociado al proxy para conceder el permiso `rds-db:connect`. Con la autenticación IAM integral, se elimina la necesidad de registrar usuarios individuales de bases de datos con el proxy a través de los secretos de Secrets Manager.

### Uso de TLS/SSL con RDS Proxy
<a name="rds-proxy-security.tls"></a>

 Puede conectarse a RDS Proxy con el protocolo TLS/SSL. 

**nota**  
 El proxy de RDS utiliza certificados de AWS Certificate Manager (ACM). Si está utilizando RDS Proxy, no es necesario descargar certificados de Amazon RDS ni actualizar aplicaciones que usen conexiones RDS Proxy.

Para aplicar TLS a todas las conexiones entre el proxy y la base de datos, puede especificar la configuración **Exigir Transport Layer Security** al crear o modificar un proxy en la Consola de administración de AWS. 

RDS Proxy puede también garantizar que la sesión utiliza TLS/SSL entre el cliente y el punto de enlace de RDS Proxy. Para que RDS Proxy lo haga, especifique el requisito en el lado del cliente. Las variables de sesión SSL no están establecidas para las conexiones SSL a una base de datos usando RDS Proxy. 
+  En el caso de RDS para MySQL, especifique el requisito en el lado del cliente con el parámetro `--ssl-mode` cuando ejecute el comando `mysql`. 
+  Para Amazon RDS PostgreSQL, especifique `sslmode=require` como parte de la cadena `conninfo` cuando ejecute el comando `psql`. 

RDS Proxy admite las versiones 1.0, 1.1, 1.2 y 1.3 del protocolo TLS. Puede conectarse al proxy mediante una versión de TLS posterior a la que utiliza en la base de datos subyacente. 

De forma predeterminada, los programas del cliente establecen una conexión cifrada con RDS Proxy, con un mayor control disponible gracias a la opción `--ssl-mode`. Desde el lado del cliente, RDS Proxy es compatible con todos los modos de SSL. 

 Para el cliente, los modos SSL son los siguientes: 

**PREFERRED**  
 SSL es la primera opción, pero no es necesaria. 

**DISABLED**  
 No se permite SSL. 

**REQUIRED**  
 Obliga a usar SSL. 

**VERIFY\$1CA**  
 Implemente SSL y verifique la entidad de certificación (CA). 

**VERIFY\$1IDENTITY**  
 Obliga a usar SSL y comprueba CA y el nombre de host de CA. 

 Cuando se utiliza un cliente con `--ssl-mode` `VERIFY_CA` o `VERIFY_IDENTITY`, especifique la opción de `--ssl-ca` apuntando a una autoridad certificadora en formato `.pem`. Para usar el archivo `.pem`, descargue todos los PEM de CA raíz desde [Amazon Trust Services](https://www.amazontrust.com/repository/) y colóquelos en un solo archivo `.pem`.

 RDS Proxy utiliza certificados comodín, que se aplican tanto a un dominio como a sus subdominios. Si utiliza el cliente `mysql` para conectarse con el modo SSL `VERIFY_IDENTITY`, actualmente deberá usar el comando `mysql` compatible con MySQL 8.0. 

## Conmutación por error
<a name="rds-proxy-failover"></a>

 La *conmutación por error* es una característica de alta disponibilidad que reemplaza una instancia de base de datos por otra cuando la instancia original deja de estar disponible. Puede producirse una conmutación por error debido a un problema con una instancia de base de datos. También es posible que sea parte de los procedimientos normales de mantenimiento, como durante la actualización de una base de datos. La conmutación por error se aplica a las instancias de base de datos de RDS en una configuración Multi-AZ.

 La conexión a través de un proxy hace que las aplicaciones sean más resistentes a las conmutaciones por error de la base de datos. Cuando la instancia de base de datos original deja de estar disponible, RDS Proxy se conecta a la base de datos en espera sin perder las conexiones de aplicaciones inactivas. Esto le ayuda a acelerar y simplificar el proceso de conmutación por error. Esto es menos disruptivo para la aplicación que un problema típico de reinicio o base de datos. 

 Sin RDS Proxy, una conmutación por error implica una breve interrupción. Durante la interrupción, no puede realizar operaciones de escritura en esa base de datos en conmutación por error. Las conexiones de base de datos existentes se interrumpen y la aplicación debe volver a abrirlas. La base de datos está disponible para nuevas conexiones y operaciones de escritura cuando se promociona una instancia de base de datos de solo lectura para que tome el lugar de la que no está disponible. 

 Durante las conmutaciones por error de la base de datos, RDS Proxy continúa aceptando conexiones en la misma dirección IP y dirige automáticamente las conexiones a la nueva instancia de base de datos primaria. Los clientes que se conectan a través de RDS Proxy no son susceptibles a lo siguiente: 
+  Retrasos de propagación del sistema de nombres de dominio (DNS) en la conmutación por error. 
+  Almacenamiento en caché de DNS local. 
+  Tiempos de espera de conexión. 
+  Incertidumbre sobre qué instancia de base de datos es el escritor actual. 
+  Espera a la respuesta de una consulta de un escritor anterior que dejó de estar disponible sin cerrar las conexiones. 

 En el caso de las aplicaciones que mantienen su propio grupo de conexiones, pasar por RDS Proxy significa que la mayoría de las conexiones permanecen activas durante las conmutaciones por error u otras interrupciones. Solo se cancelan las conexiones que están en medio de una transacción o sentencia SQL. El proxy de RDS acepta inmediatamente nuevas conexiones. Cuando el escritor de la base de datos no está disponible, RDS Proxy pone en cola las solicitudes entrantes. 

 Para aplicaciones que no mantienen sus propios grupos de conexiones, RDS Proxy ofrece velocidades de conexión más rápidas y conexiones más abiertas. Descarga la costosa sobrecarga de reconexiones frecuentes de la base de datos. Lo hace reutilizando las conexiones de base de datos que se mantienen en el grupo de conexiones de RDS Proxy. Este enfoque es especialmente importante para las conexiones TLS, en las que los costos de instalación son importantes. 

## Transacciones
<a name="rds-proxy-transactions"></a>

 Todas las instrucciones dentro de una sola transacción siempre utilizan la misma conexión de base de datos subyacente. La conexión está disponible para su uso por parte de una sesión diferente cuando finaliza la transacción. El uso de la transacción como unidad de granularidad tiene las siguientes consecuencias: 
+  La reutilización de la conexión puede ocurrir después de cada instrucción individual cuando se ha activado la configuración `autocommit` de RDS para MySQL. 
+  Por el contrario, cuando el parámetro `autocommit` está desactivado, la primera instrucción que emita en una sesión comienza una nueva transacción. Por ejemplo, suponga que introduce una secuencia de `SELECT`, `INSERT`, `UPDATE` y otras instrucciones de lenguaje de manipulación de datos (DML). En este caso, la reutilización de la conexión no se producirá hasta que emita un`COMMIT`, `ROLLBACK` o finalice la transacción. 
+  La introducción de una instrucción de lenguaje de definición de datos (DDL) hace que la transacción finalice después de que se complete esa instrucción. 

 RDS Proxy detecta cuándo finaliza una transacción a través del protocolo de red utilizado por la aplicación cliente de base de datos. La detección de transacciones no se basa en palabras clave como `COMMIT` o `ROLLBACK` que aparecen en el texto de la instrucción SQL. 

 En algunos casos, RDS Proxy podría detectar una solicitud de base de datos que hace que sea poco práctico trasladar la sesión a una conexión diferente. En estos casos, desactiva la multiplexación para esa conexión el resto de la sesión. La misma regla se aplica si RDS Proxy no puede estar seguro de que la multiplexación sea práctica para la sesión. Esta operación se denomina *fijación*. Para obtener información sobre formas de detectar y minimizar la fijación, consulte [Cómo evitar la fijación de RDS Proxy](rds-proxy-pinning.md). 

# Introducción al proxy de RDS
<a name="rds-proxy-setup"></a>

Utilice la información de las siguientes páginas para configurar y administrar [Amazon RDS Proxy ](rds-proxy.md), así como para definir las opciones de seguridad relacionadas. Estas opciones de seguridad controlan quién puede acceder a cada proxy y cómo se conecta cada proxy a instancias de base de datos.

Si es la primera vez que utiliza RDS Proxy, le recomendamos que siga las páginas en el orden en que las presentamos. 

**Topics**
+ [

# Configuración de requisitos previos de red para RDS Proxy
](rds-proxy-network-prereqs.md)
+ [

# Configuración de credenciales de base de datos para RDS Proxy
](rds-proxy-secrets-arns.md)
+ [

# Configuración de la autenticación de IAM para RDS Proxy
](rds-proxy-iam-setup.md)
+ [

# Creación de un proxy para Amazon RDS
](rds-proxy-creating.md)
+ [

# Visualización de un proxy
](rds-proxy-viewing.md)
+ [

# Conexión a una base de datos mediante RDS Proxy
](rds-proxy-connecting.md)

# Configuración de requisitos previos de red para RDS Proxy
<a name="rds-proxy-network-prereqs"></a>

 El uso de RDS Proxy requiere que tenga una nube privada virtual (VPC) común entre su instancia de base de datos de RDS y RDS Proxy. Esta VPC debe tener un mínimo de dos subredes que se encuentren en diferentes zonas de disponibilidad. Tu cuenta puede poseer estas subredes o compartirlas con otras cuentas. Para obtener más información acerca del uso compartido de VPC, consulte [Trabajar con VPC compartidas](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html). 

Para la compatibilidad con IPv6, se requiere una configuración de red adicional:
+ **Tipos de redes de puntos de conexión de IPv6**: la VPC y las subredes deben estar configuradas para admitir IPv6. Esto incluye tener bloques de CIDR de IPv6 asignados a la VPC y las subredes.
+ **Tipos de redes de puntos de conexión de doble pila**: la VPC y las subredes deben admitir direcciones IPv4 e IPv6.
+ **Tipos de redes de conexión de destino de IPv6**: la base de datos debe estar configurada en modo de doble pila para admitir conexiones de IPv6 desde el proxy.

Los recursos de aplicaciones cliente, como Amazon EC2, Lambda o Amazon ECS, pueden estar en la misma VPC como el proxy. O pueden estar en una VPC independiente del proxy. Si se ha conectado correctamente a instancias de base de datos de RDS, ya dispone de los recursos de red necesarios. 

**Topics**
+ [

## Obtención de información sobre subredes.
](#rds-proxy-network-prereqs.subnet-info)
+ [

## Planificación de la capacidad de direcciones IP
](#rds-proxy-network-prereqs.plan-ip-address)

## Obtención de información sobre subredes.
<a name="rds-proxy-network-prereqs.subnet-info"></a>

Para crear un proxy, debe proporcionar las subredes y la VPC en las que opera el proxy. En el siguiente ejemplo de Linux se muestran comandos de la AWS CLI con los que se examinan las VPC y las subredes que son propiedad de su Cuenta de AWS. En particular, se pasan los ID de subred como parámetros si crea un proxy utilizando la CLI. 

```
aws ec2 describe-vpcs
aws ec2 describe-internet-gateways
aws ec2 describe-subnets --query '*[].[VpcId,SubnetId]' --output text | sort
```

En el siguiente ejemplo de Linux, se muestran comandos de la AWS CLI que sirven para determinar los ID de subred correspondientes a una instancia de base de datos de RDS. Busque el ID de la VPC para la instancia de base de datos. Examine la VPC para encontrar sus subredes. En el siguiente ejemplo de Linux se muestra cómo.

```
$ #From the DB instance, trace through the DBSubnetGroup and Subnets to find the subnet IDs.
$ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0]|[Subnets]|[0]|[*].SubnetIdentifier' --output text
```

```
subnet_id_1
subnet_id_2
subnet_id_3
...
```

```
$ #From the DB instance, find the VPC.
$ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0].VpcId' --output text
```

```
my_vpc_id
```

```
$ aws ec2 describe-subnets --filters Name=vpc-id,Values=my_vpc_id --query '*[].[SubnetId]' --output text
```

```
subnet_id_1
subnet_id_2
subnet_id_3
subnet_id_4
subnet_id_5
subnet_id_6
```

## Planificación de la capacidad de direcciones IP
<a name="rds-proxy-network-prereqs.plan-ip-address"></a>

Un RDS Proxy ajusta automáticamente su capacidad según sea necesario en función del tamaño y la cantidad de instancias de base de datos registradas en él. Algunas operaciones también pueden requerir una capacidad de proxy adicional, como el aumento del tamaño de una base de datos registrada u operaciones de mantenimiento internas de RDS Proxy. Durante estas operaciones, es posible que el proxy necesite más direcciones IP para aprovisionar la capacidad adicional. Estas direcciones adicionales permiten que su proxy escale sin afectar a su carga de trabajo. La falta de direcciones IP gratuitas en las subredes impide que un proxy se amplíe. Esto puede provocar latencias de consulta más altas o errores en la conexión del cliente. RDS le notifica mediante un evento `RDS-EVENT-0243` cuando no hay suficientes direcciones IP libres en sus subredes. Para obtener información acerca de este evento, consulte [Trabajo con eventos de RDS ProxyTrabajo con eventos de RDS Proxy](rds-proxy.events.md).

**nota**  
RDS Proxy no consume más de 215 direcciones IP para cada proxy en una VPC.

Reserve el número mínimo siguiente de direcciones IP libres en las subredes para el proxy, en función de los tamaños de las clases de instancias de bases de datos.


|  Clase de instancia de base de datos  |  Direcciones IP gratuitas mínimas  | 
| --- | --- | 
|  db.\$1.xlarge o menor   |  10  | 
|  db.\$1.24xlarge   |  15  | 
|  db.\$1.24xlarge   |  25  | 
|  db.\$1.24xlarge   |  45  | 
|  db.\$1.24xlarge   |  60  | 
|  db.\$1.24xlarge   |  75  | 
|  db.\$1.24xlarge   |  110  | 

Estos números de direcciones IP recomendados son estimaciones para un proxy con solo el punto de conexión predeterminado. Un proxy con puntos de conexión adicionales o réplicas de lectura puede necesitar más direcciones IP gratuitas. Para cada punto de conexión adicional, le recomendamos que reserve tres direcciones IP más. Para cada réplica de lectura, le recomendamos que reserve direcciones IP adicionales tal como se especifica en la tabla en función del tamaño de dicha réplica de lectura.

# Configuración de credenciales de base de datos para RDS Proxy
<a name="rds-proxy-secrets-arns"></a>

RDS Proxy en Amazon RDS utiliza AWS Secrets Manager para almacenar y administrar las credenciales de la base de datos de forma segura. En lugar de incrustar credenciales en la aplicación, se asocia un proxy con un secreto de Secrets Manager que contiene los detalles de autenticación necesarios. Cree un secreto independiente de Secrets Manager para cada cuenta de usuario de base de datos a la que se conecta el proxy en la instancia de base de datos de RDS.

Otra opción, puede configurar RDS Proxy para utilizar la autenticación de IAM integral, lo que elimina la necesidad de almacenar las credenciales de la base de datos en Secrets Manager. RDS Proxy utiliza la autenticación de IAM para las conexiones de cliente a proxy y de proxy a base de datos. Esto proporciona una solución de autenticación basada en IAM totalmente integrada que no requiere administrar secretos ni contraseñas. Para obtener información sobre cómo agregar un usuario de base de datos de IAM nuevo, consulte [Creación de cuentas de base de datos utilizando autenticación de IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

**Topics**
+ [

## Creación de secretos para utilizar con RDS Proxy
](#rds-proxy-secrets-create)

## Creación de secretos para utilizar con RDS Proxy
<a name="rds-proxy-secrets-create"></a>

Antes de crear un proxy, debe crear al menos un secreto que almacene las credenciales de la base de datos.

### Consola
<a name="rds-proxy-secrets-create-console"></a>

**Creación de un secreto**

1. Abra la consola de Secrets Manager en[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Elija **Almacenar un secreto nuevo**.

1. Elija **Credenciales para base de datos de Amazon RDS**.

1. Introduzca un nombre de usuario y una contraseña. Las credenciales que introduzca deben coincidir con las credenciales de un usuario de base de datos que exista en la base de datos de RDS asociada. RDS Proxy utiliza estas credenciales para autenticar y establecer conexiones con la base de datos en nombre de las aplicaciones.

   Si no hay coincidencia, puede actualizar el secreto para que coincida con la contraseña de la base de datos. Hasta que no actualice el secreto, los intentos de conexión a través del proxy mediante ese secreto no se realizarán correctamente, pero las conexiones que utilicen otros secretos válidos seguirán funcionando.
**nota**  
En el caso de RDS para SQL Server, RDS Proxy requiere un secreto que distinga entre mayúsculas y minúsculas en Secrets Manager, independientemente de la configuración de intercalación de la instancia de base de datos. Si la aplicación permite nombres de usuario con distintas mayúsculas, como “Admin” y “admin”, deberá crear secretos distintos para cada uno. RDS Proxy no admite la autenticación de nombre de usuario sin distinción entre mayúsculas y minúsculas entre el cliente y el proxy.  
Para obtener más información sobre colación en SQL Server, consulte la documentación de [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver16).

1. En **Base de datos**, seleccione la base de datos de Amazon RDS a la que accederá el secreto.

1. Rellene otras configuraciones para el secreto y elija **Guardar**. Para obtener instrucciones completas, consulte [Creación de un secreto de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) en la *Guía del usuario de AWS Secrets Manager*. 

### AWS CLI
<a name="rds-proxy-secrets-create-cli"></a>

Cuando cree un proxy a través de la AWS CLI, especifique los nombres de recursos de Amazon (ARN) de los secretos correspondientes. Lo hace para todas las cuentas de usuario de base de datos a las que puede acceder el proxy. En la Consola de administración de AWS, elija los secretos por sus nombres descriptivos.
+ Para crear un secreto de Secrets Manager para utilizarlo con RDS Proxy, utilice el comando [create-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/create-secret.html):

  ```
  aws secretsmanager create-secret \
    --name "secret_name" \
    --description "secret_description" \
    --region region_name \
    --secret-string '{"username":"db_user","password":"db_user_password"}'
  ```
+ También puede crear una clave personalizada para cifrar su secreto de Secrets Manager. El siguiente comando crea una clave de ejemplo.

  ```
  aws kms create-key --description "test-key" --policy '{
    "Id":"kms-policy",
    "Version": "2012-10-17",		 	 	 
    "Statement":
      [
        {
          "Sid":"Enable IAM User Permissions",
          "Effect":"Allow",
          "Principal":{"AWS":"arn:aws:iam::account_id:root"},
          "Action":"kms:*","Resource":"*"
        },
        {
          "Sid":"Allow access for Key Administrators",
          "Effect":"Allow",
          "Principal":
            {
              "AWS":
                ["$USER_ARN","arn:aws:iam:account_id::role/Admin"]
            },
          "Action":
            [
              "kms:Create*",
              "kms:Describe*",
              "kms:Enable*",
              "kms:List*",
              "kms:Put*",
              "kms:Update*",
              "kms:Revoke*",
              "kms:Disable*",
              "kms:Get*",
              "kms:Delete*",
              "kms:TagResource",
              "kms:UntagResource",
              "kms:ScheduleKeyDeletion",
              "kms:CancelKeyDeletion"
            ],
          "Resource":"*"
        },
        {
          "Sid":"Allow use of the key",
          "Effect":"Allow",
          "Principal":{"AWS":"$ROLE_ARN"},
          "Action":["kms:Decrypt","kms:DescribeKey"],
          "Resource":"*"
        }
      ]
  }'
  ```

 Por ejemplo, los siguientes comandos crean secretos de Secrets Manager para dos usuarios de bases de datos: 

```
aws secretsmanager create-secret \
  --name secret_name_1 --description "db admin user" \
  --secret-string '{"username":"admin","password":"choose_your_own_password"}'

aws secretsmanager create-secret \
  --name secret_name_2 --description "application user" \
  --secret-string '{"username":"app-user","password":"choose_your_own_password"}'
```

Para crear estos secretos cifrados con su clave de AWS KMS personalizada, use los siguientes comandos:

```
aws secretsmanager create-secret \
  --name secret_name_1 --description "db admin user" \
  --secret-string '{"username":"admin","password":"choose_your_own_password"}' \
  --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id

aws secretsmanager create-secret \
  --name secret_name_2 --description "application user" \
  --secret-string '{"username":"app-user","password":"choose_your_own_password"}' \
  --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id
```

Para ver los secretos que posee la cuenta de AWS, utilice el comando [list-secrets](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/list-secrets.html):

```
aws secretsmanager list-secrets
```

Si crea un proxy mediante la CLI, se pasan los nombres de recursos de Amazon (ARN) de uno o más secretos al parámetro `--auth`. En el siguiente ejemplo se muestra cómo preparar un informe si solo se tiene el nombre y el ARN de cada secreto que es propiedad de la cuenta de AWS. En este ejemplo se utiliza el parámetro `--output table`, disponible en la versión 2 de la AWS CLI. Si está utilizando la versión 1 de la AWS CLI, use `--output text`. 

```
aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table
```

Para confirmar que el secreto contiene las credenciales correctas en el formato adecuado, utilice el comando [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html). Reemplace `your_secret_name` por el nombre corto o ARN del secreto.

```
aws secretsmanager get-secret-value --secret-id your_secret_name
```

La salida contiene una línea con un valor codificado en JSON similar al siguiente:

```
...
"SecretString": "{\"username\":\"your_username\",\"password\":\"your_password\"}",
...
```

# Configuración de la autenticación de IAM para RDS Proxy
<a name="rds-proxy-iam-setup"></a>

Para configurar la autenticación de AWS Identity and Access Management (IAM) para RDS Proxy en Amazon RDS, cree y configure una política de IAM que conceda los permisos necesarios. 

En este tema se proporcionan los pasos para configurar la autenticación de IAM para RDS Proxy, incluida la creación de la política de IAM necesaria y la asociación a un rol de IAM. 

**sugerencia**  
Este procedimiento solo es necesario si desea crear un rol de IAM propio. De lo contrario, RDS puede crear automáticamente el rol requerido cuando configure el proxy, por lo que puede omitir estos pasos.

## Requisitos previos
<a name="rds-proxy-iam-setup-prereqs"></a>

Antes de configurar la autenticación de IAM para RDS Proxy, asegúrese de que tiene lo siguiente:
+ **AWS Secrets Manager**: al menos un secreto almacenado que contenga credenciales de base de datos. Para obtener instrucciones para crear secretos, consulte [Configuración de credenciales de base de datos para RDS Proxy](rds-proxy-secrets-arns.md).

  Esto no es obligatorio si utiliza la autenticación de IAM integral.
+ **Permisos de IAM**: un rol o usuario de IAM con permisos para crear y administrar políticas, roles y secretos de IAM en AWS Secrets Manager.

## Creación de una política de IAM para la autenticación de IAM integral
<a name="rds-proxy-iam-setup-e2e-steps"></a>

Cuando se utiliza la autenticación de IAM integral, RDS Proxy se conecta a la base de datos mediante la autenticación de IAM en lugar de recuperar las credenciales de Secrets Manager. Para ello, es necesario configurar el rol de IAM con permisos `rds-db:connect` para las cuentas de base de datos que desee utilizar con el proxy.

Para autenticar RDS Proxy en la base de datos mediante IAM, cree un rol de IAM con una política que conceda los permisos de conexión a la base de datos necesarios.

### Consola
<a name="rds-proxy-iam-e2e-console"></a>

**Creación de un rol para la autenticación de IAM integral con el proxy**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Cree una política de permisos para el rol. Para conocer los pasos generales, consulte [Creación de políticas de IAM (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html).

   Pegue esta política en el editor JSON y realice los siguientes cambios:
   + Sustituya su propio ID de cuenta.
   + Sustituya `us-east-2` por el lugar donde debe residir el proxy.
   + Sustituya los ID de los recursos de la base de datos y los nombres de usuario por los que desee utilizar. El formato del ID de recurso difiere entre las instancias de RDS y Aurora clusters.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "rds-db:connect",
               "Resource": [
                   "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_1",
                   "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_2"
               ]
           }
       ]
   }
   ```

1. Cree el rol y asocie la política de permisos a este. Para conocer los pasos generales, consulte [Creación de un rol para delegar permisos a un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). 

   En **Tipo de entidad de confianza**, elija **Servicio de AWS**. En **Caso de uso**, seleccione **RDS** y elija **RDS: agregar rol a la base de datos** para el caso de uso.

1. En **Políticas de permisos**, elija la política que creó.

1. En **Seleccionar entidades de confianza**, introduzca la siguiente política de confianza para el rol:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "rds.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

### AWS CLI
<a name="rds-proxy-iam-e2e-cli"></a>

Para crear el rol mediante la AWS CLI, envíe la siguiente solicitud:

```
aws iam create-role \
  --role-name my_e2e_iam_role_name \

  --assume-role-policy-document '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
```

A continuación, asocie la política al rol:

```
aws iam put-role-policy \
  --role-name my_e2e_iam_role_name \
  --policy-name e2e_iam_db_connect_policy \
  --policy-document '{

    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "rds-db:connect",
            "Resource": [
                "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_1",
                "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_2"
            ]
        }
    ]
}'
```

Una vez configurados el rol de IAM y los permisos para la autenticación de IAM integral, puede crear ahora un proxy con `DefaultAuthScheme` configurado en `IAM_AUTH`. Este proxy se autentica directamente en la base de datos mediante IAM sin requerir los secretos de Secrets Manager. Para obtener instrucciones, consulte [Creación de un proxy para Amazon RDS](rds-proxy-creating.md).

Cuando utilice la autenticación de IAM integral, asegúrese de que los usuarios de la base de datos estén configurados para la autenticación de IAM tal y como se describe en [Creación de cuentas de base de datos utilizando autenticación de IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

## Creación de una política de IAM para acceder a Secrets Manager
<a name="rds-proxy-iam-setup-steps"></a>

Para permitir que RDS Proxy recupere las credenciales de la base de datos de Secrets Manager, cree un rol de IAM con una política que conceda los permisos necesarios.

## Consola
<a name="rds-proxy-iam-console"></a>

**Creación de un rol que acceda a los secretos que desea utilizar con el proxy**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Cree una política de permisos para el rol. Para conocer los pasos generales, consulte [Creación de políticas de IAM (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html).

   Pegue esta política en el editor JSON y realice los siguientes cambios:
   + Sustituya su propio ID de cuenta.
   + Sustituya `us-east-2` por la región donde residirá el proxy.
   + Sustituya los nombres secretos por los que ha creado. Para obtener más información, consulte [Especificación de claves de KMS en instrucciones de política de IAM](https://docs.aws.amazon.com/kms/latest/developerguide/cmks-in-iam-policies.html).
   + Sustituya el ID de clave de KMS por el que utilizó para cifrar los secretos de Secrets Manager, ya sea la clave predeterminada o una clave propia.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "secretsmanager:GetSecretValue",
               "Resource": [
                   "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret_name_1",
                   "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret_name_2"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "kms:Decrypt",
               "Resource": "arn:aws:kms:us-east-2:111122223333:key/key_id",
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. Cree el rol y asocie la política de permisos a este. Para conocer los pasos generales, consulte [Creación de un rol para delegar permisos a un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). 

   En **Tipo de entidad de confianza**, elija **Servicio de AWS**. En **Caso de uso**, seleccione **RDS** y elija **RDS: agregar rol a la base de datos** para el caso de uso.

1. En **Políticas de permisos**, elija la política que creó.

1. En **Seleccionar entidades de confianza**, introduzca la siguiente política de confianza para el rol:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "rds.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

## AWS CLI
<a name="rds-proxy-iam-cli"></a>

Para crear el rol mediante la AWS CLI, envíe la siguiente solicitud:

```
aws iam create-role \
  --role-name my_role_name \
  --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
```

A continuación, asocie la política al rol:

```
aws iam put-role-policy \
  --role-name my_role_name \
  --policy-name secret_reader_policy \
  --policy-document '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1",
                "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com"
                }
            }
        }
    ]
}'
```

Una vez configurados el rol de IAM y los permisos, puede crear un proxy y asociarlo a este rol. Esto permite al proxy recuperar de forma segura las credenciales de la base de datos de AWS Secrets Manager y habilitar la autenticación de IAM para las aplicaciones. Para obtener instrucciones, consulte [Creación de un proxy para Amazon RDS](rds-proxy-creating.md).

# Creación de un proxy para Amazon RDS
<a name="rds-proxy-creating"></a>

Puede asociar un proxy con una instancia de base de datos de RDS para MariaDB, RDS para Microsoft SQL Server, RDS para MySQL o RDS para PostgreSQL. 

## Consola
<a name="rds-proxy-creating.console"></a>

**Para crear un proxy**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, seleccione **Proxies**. 

1. Elija **Create proxy (Crear proxy)**. 

1. Configure los siguientes ajustes para el proxy.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy-creating.html)

1.  Elija **Create proxy (Crear proxy)**. 

## AWS CLI
<a name="rds-proxy-creating.CLI"></a>

 Para crear un proxy utilizando el comando AWS CLI, llame al comando [create-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-proxy.html) con los siguientes parámetros requeridos: 
+ `--db-proxy-name`
+ `--engine-family`
+ `--role-arn`
+ `--vpc-subnet-ids`

El valor `--engine-family` distingue entre mayúsculas y minúsculas.

**Example**  
Para Linux, macOS o Unix:  

```
aws rds create-db-proxy \
    --db-proxy-name proxy_name \
    --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \
    --role-arn iam_role \
    --vpc-subnet-ids space_separated_list \
    [--default-auth-scheme { NONE | IAM_AUTH }] \
    [--auth ProxyAuthenticationConfig_JSON_string] \
    [--vpc-security-group-ids space_separated_list] \
    [--require-tls | --no-require-tls] \
    [--idle-client-timeout value] \
    [--debug-logging | --no-debug-logging] \
    [--endpoint-network-type { IPV4 | IPV6 | DUAL }] \
    [--target-connection-network-type { IPV4 | IPV6 }] \
    [--tags comma_separated_list]
```
Para Windows:  

```
aws rds create-db-proxy ^
    --db-proxy-name proxy_name ^
    --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^
    --role-arn iam_role ^
    --vpc-subnet-ids space_separated_list ^
    [--default-auth-scheme { NONE | IAM_AUTH }] ^
    [--auth ProxyAuthenticationConfig_JSON_string] ^
    [--vpc-security-group-ids space_separated_list] ^
    [--require-tls | --no-require-tls] ^
    [--idle-client-timeout value] ^
    [--debug-logging | --no-debug-logging] ^
    [--endpoint-network-type { IPV4 | IPV6 | DUAL }] ^
    [--target-connection-network-type { IPV4 | IPV6 }] ^
    [--tags comma_separated_list]
```

A continuación se muestra un ejemplo del valor JSON para la opción `--auth`. Este ejemplo aplica un tipo de autenticación de cliente diferente a cada secreto.

```
[
  {
    "Description": "proxy description 1",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab",
    "IAMAuth": "DISABLED",
    "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256"
  },
  
  {
    "Description": "proxy description 2",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:secret/1234abcd-12ab-34cd-56ef-1234567890cd",
    "IAMAuth": "DISABLED",
    "ClientPasswordAuthType": "POSTGRES_MD5"
    
  },
  
  {
    "Description": "proxy description 3",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef",
    "IAMAuth": "REQUIRED"
  }
  
]
```

El parámetro `--endpoint-network-type` especifica la versión de IP del punto de conexión del proxy que los clientes utilizan para conectarse al proxy. Los valores válidos son:
+ `IPV4`: el punto de conexión del proxy utiliza solo direcciones IPv4 (predeterminado).
+ `IPV6`: el punto de conexión del proxy utiliza solo direcciones IPv6.
+ `DUAL`: el punto de conexión del proxy admite direcciones IPv4 y IPv6.

El parámetro `--target-connection-network-type` especifica la versión de IP que utiliza el proxy para conectarse a la base de datos de destino. Los valores válidos son:
+ `IPV4`: el proxy se conecta a la base de datos mediante direcciones IPv4 (predeterminado).
+ `IPV6`: el proxy se conecta a la base de datos mediante direcciones IPv6.

Para usar los tipos de redes de punto de conexión de IPv6 o de doble pila, la VPC y las subredes deben estar configuradas para admitir el tipo de red seleccionado. Para utilizar el tipo de red de conexión de destino de IPv6, la base de datos debe admitir el modo de doble pila.

**sugerencia**  
 Si aún no conoce los ID de subred que utilizar para el parámetro `--vpc-subnet-ids`, consulte [Configuración de requisitos previos de red para RDS Proxy](rds-proxy-network-prereqs.md) para ver ejemplos de cómo encontrarlos. 

**nota**  
Este grupo de seguridad debe permitir el acceso a la base de datos a la que se conecta el proxy. El mismo grupo de seguridad se utiliza para la entrada de las aplicaciones al proxy y para la salida del proxy a la base de datos. Por ejemplo, supongamos que utiliza el mismo grupo de seguridad para la base de datos y el proxy. En este caso, asegúrese de especificar que los recursos de ese grupo de seguridad pueden comunicarse con otros recursos del mismo grupo de seguridad.  
Cuando se utiliza una VPC compartida, no se puede utilizar el grupo de seguridad predeterminado para la VPC o uno que pertenezca a otra cuenta. Elija un grupo de seguridad que pertenezca a su cuenta. Si no existe uno, créelo. Para obtener más información acerca de esta limitación, consulte [Trabajar con VPC compartidas](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html#vpc-share-limitations). 

 Para crear las asociaciones adecuadas para el proxy, utilice también el comando [register-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/register-db-proxy-targets.html). Especifique el nombre de grupo de destino de `default`. El proxy de RDS crea automáticamente un grupo de destino con este nombre cuando crea cada proxy. 

```
aws rds register-db-proxy-targets
    --db-proxy-name value
    [--target-group-name target_group_name]
    [--db-instance-identifiers space_separated_list]  # rds db instances, or
    [--db-cluster-identifiers cluster_id]        # rds db cluster (all instances)
```

## API de RDS
<a name="rds-proxy-creating.API"></a>

 Para crear un proxy de RDS, llame a la operación de la API de Amazon RDS [CreateDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBProxy.html). Transfiera un parámetro con la estructura de datos [AuthConfig](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AuthConfig.html) . 

 El proxy de RDS crea automáticamente un grupo de destino denominado `default` cuando crea cada proxy. Se asocia una instancia de base de datos de RDS con el grupo de destino llamando a la función [RegisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RegisterDBProxyTargets.html). 

**importante**  
Al seleccionar la **autenticación de IAM** para el esquema de autenticación predeterminado:  
Debe habilitar la autenticación de la base de datos de IAM en las instancias o clústeres de la base de datos de destino para que el proxy pueda conectarse correctamente.
Si elige **Crear rol de IAM**, es obligatorio el campo **Cuentas de base de datos para la autenticación de IAM**.
Si selecciona un rol de IAM existente, la consola no actualiza automáticamente el rol con los permisos de conexión de base de datos. Compruebe que el rol tenga los permisos `rds-db:connect` necesarios.

# Visualización de un proxy
<a name="rds-proxy-viewing"></a>

 Después de crear uno o varios proxies de RDS, puede verlos y administrarlos en la Consola de administración de AWS, la AWS CLI o la API de RDS. Puede revisar sus detalles de configuración, supervisar el rendimiento y determinar qué proxies modificar o eliminar según sea necesario.

Para permitir que las aplicaciones de base de datos enruten el tráfico a través de un proxy, debe especificar el punto de conexión del proxy en la cadena de conexión.

## Consola
<a name="rds-proxy-viewing.console"></a>

**Visualización de un proxy en la consola**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, seleccione **Proxies**. 

1. Seleccione el nombre del proxy para ver sus detalles. 

1. En la página de detalles, la sección **Grupos de destino** muestra cómo se enlaza el proxy a una instancia de base de datos de RDS específica. Puede navegar a la página del grupo de destino predeterminado para obtener una vista más detallada de esta asociación, incluida la configuración definida durante la creación del proxy. Esta incluye el porcentaje máximo de conexión, el tiempo de espera de préstamo de la conexión, la familia de motores y los filtros de fijación de sesión.

## CLI
<a name="rds-proxy-viewing.cli"></a>

 Para consultar el proxy mediante la CLI, utilice el comando [describe-db-proxies](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). De forma predeterminada, la solicitud devuelve todos los proxies propiedad de la cuenta de AWS. Para ver los detalles de un solo proxy, especifique su nombre con el parámetro `--db-proxy-name`. 

```
aws rds describe-db-proxies [--db-proxy-name proxy_name]
```

 Para consultar otra información asociada con el proxy, utilice los comandos que se muestran a continuación. 

```
aws rds describe-db-proxy-target-groups  --db-proxy-name proxy_name

aws rds describe-db-proxy-targets --db-proxy-name proxy_name
```

 Utilice la siguiente secuencia de comandos para ver más detalles acerca de las cosas que están asociadas con el proxy: 

1.  Para obtener una lista de proxies, ejecute [describe-db-proxies](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). 

1.  Para mostrar parámetros de conexión como el porcentaje máximo de conexiones que puede utilizar el proxy, ejecute [describe-db-proxy-target-groups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-target-groups.html) `--db-proxy-name`. Utilice el nombre del proxy como el valor del parámetro. 

1.  Para consultar los detalles de la instancia de base de datos de RDS con asociación con el grupo de destino devuelto, ejecute [describe-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-targets.html). 

## API de RDS
<a name="rds-proxy-viewing.api"></a>

 Para ver los proxies mediante la API de RDS, utilice la operación [DescribeDBProxies](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBProxies.html) . Devuelve valores del tipo de datos [DBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBProxy.html). 

 Para consultar los detalles de la configuración de conexión del proxy, utilice los identificadores de proxy de este valor devuelto con la operación [DescribeDBProxyTargetGroups](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBProxyTargetGroups.html). Devuelve valores del tipo de datos [DBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBProxyTargetGroup.html). 

 Para consultar la instancia de RDS o el clúster de bases de datos de Aurora asociado con el proxy, utilice la operación [DescribeDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBProxyTargets.html). Devuelve valores del tipo de datos [DBProxyTarget](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBProxyTarget.html). 

# Conexión a una base de datos mediante RDS Proxy
<a name="rds-proxy-connecting"></a>

La forma en que se conecta a una instancia de base de datos de RDS a través de un proxy es generalmente la misma que para conectarla directamente a la base de datos. Para obtener más información, consulte [Información general de los puntos de enlace de proxy](rds-proxy-endpoints.md#rds-proxy-endpoints-overview). 

**Topics**
+ [

## Conexión a una base de datos mediante credenciales de base de datos
](#rds-proxy-connecting-native)
+ [

## Conexión a una base de datos mediante autenticación de IAM
](#rds-proxy-connecting-iam)
+ [

## Consideraciones para conectarse a Microsoft SQL Server
](#rds-proxy-connecting-sqlserver)
+ [

## Consideraciones para conectarse a PostgreSQL
](#rds-proxy-connecting-postgresql)

## Conexión a una base de datos mediante credenciales de base de datos
<a name="rds-proxy-connecting-native"></a>

 Siga los siguientes pasos para conectarse a un proxy mediante credenciales de base de datos: 

1.  Buscar el punto de enlace del proxy. En la Consola de administración de AWS, puede encontrar el punto de enlace en la página de detalles del proxy correspondiente. Con la AWS CLI, puede usar el comando [describe-db-proxies](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). El siguiente ejemplo muestra cómo. 

   ```
   # Add --output text to get output as a simple tab-separated list.
   $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}'
   [
       [
           {
               "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com",
               "DBProxyName": "the-proxy"
           },
           {
               "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com",
               "DBProxyName": "the-proxy-other-secret"
           },
           {
               "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com",
               "DBProxyName": "the-proxy-rds-secret"
           },
           {
               "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com",
               "DBProxyName": "the-proxy-t3"
           }
       ]
   ]
   ```

1.  Especifique el punto de conexión como parámetro del host en la cadena de conexión de la aplicación cliente. Por ejemplo, especifique el punto de enlace del proxy como el valor para la opción `mysql -h` o la opción `psql -h`. 

1.  Proporcione el mismo nombre de usuario y contraseña de la base de datos como suele hacer. 

## Conexión a una base de datos mediante autenticación de IAM
<a name="rds-proxy-connecting-iam"></a>

 Cuando utilice la autenticación de IAM con RDS Proxy, tendrá dos opciones de autenticación entre el cliente y el proxy:
+ Configure los usuarios de la base de datos para que se autentiquen con nombres de usuario y contraseñas normales. El RDS Proxy recupera el nombre de usuario y las credenciales de contraseña de Secrets Manager. La conexión desde RDS Proxy a la base de datos subyacente no pasa a través de IAM.
+ También puede utilizar la autenticación de IAM integral, que se conecta a la base de datos a través del proxy mediante IAM sin necesidad de credenciales de base de datos.

 Para conectarse a RDS Proxy utilizando la autenticación de IAM, utilice el mismo procedimiento general de conexión que para la autenticación de IAM con una instancia de base de datos de RDS. Para obtener más información acerca del uso de la IAM, consulte [Seguridad en Amazon RDS ](UsingWithRDS.md). Si utiliza la autenticación de IAM integral, proporcione el complemento de autenticación de IAM al usuario de base de datos. Consulte [Creación de cuentas de base de datos utilizando autenticación de IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

 Las principales diferencias en el uso de IAM para RDS Proxy incluyen las siguientes: 
+ Con la autenticación de IAM estándar, los usuarios de la base de datos disponen de credenciales habituales en la base de datos. Se configuran los secretos de Secrets Manager que contienen estos nombres de usuario y contraseñas y se autoriza al RDS Proxy para recuperar las credenciales de Secrets Manager. La autenticación IAM se aplica a la conexión entre el programa cliente y el proxy. A continuación, el proxy se autentica en la base de datos utilizando las credenciales de nombre de usuario y contraseña recuperadas de Secrets Manager.
+ Con la autenticación de IAM integral, no es necesario configurar los secretos de Secrets Manager para las credenciales de la base de datos. La autenticación de IAM se aplica a la conexión entre el cliente y el proxy y el proxy y la base de datos.
+ En lugar del punto de enlace de instancia, clúster o lector, se especifica el punto de enlace del proxy. Para obtener detalles sobre el punto de enlace del proxy, consulte [Conexión a la instancia con la autenticación de IAM](UsingWithRDS.IAMDBAuth.Connecting.md).
+ Asegúrese de que usa Transport Layer Security (TLS)/Capa de sockets seguros (SSL) cuando se conecte a un proxy mediante la autenticación de IAM.

Puede conceder acceso al proxy a un usuario específico modificando la política de IAM. Ejemplo:

```
"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"
```

**sugerencia**  
Al configurar la autenticación de IAM para las conexiones de RDS Proxy, siga estas instrucciones importantes para evitar problemas de conexión:  
No conceda el rol de `rds_iam` mientras mantenga la autenticación de contraseña general para el mismo usuario o rol de la base de datos.
Recuerde que, mientras los clientes se conectan a RDS Proxy mediante la autenticación de IAM, RDS Proxy siempre se conecta a la base de datos mediante la autenticación de contraseña a través de Secrets Manager.
Si la conexión se termina o se vuelve a conectar con frecuencia, elimine cualquier concesión de `rds_iam` existente del usuario o rol y utilice solo la autenticación con contraseña.
Asegúrese de que la política de contraseñas cumpla con los requisitos de caracteres seguros de SCRAM-SHA-256.
La combinación de métodos de autenticación de IAM y contraseña para el mismo usuario de la base de datos puede provocar inestabilidad de conexión.

## Consideraciones para conectarse a Microsoft SQL Server
<a name="rds-proxy-connecting-sqlserver"></a>

Para conectarse a un proxy mediante la autenticación de IAM, no utilice el campo de contraseña. En su lugar, debe proporcionar la propiedad de token adecuada para cada tipo de controlador de base de datos en el campo token. Por ejemplo, utilice la propiedad `accessToken` para JDBC o la propiedad `sql_copt_ss_access_token` para ODBC. O utilice la propiedad `AccessToken` del controlador .NET SqlClient. No puede usar la autenticación de IAM con clientes que no admitan propiedades de token.

En algunas condiciones, un proxy no puede compartir una conexión de base de datos y, en cambio, vincula la conexión de la aplicación cliente al proxy a una conexión de base de datos dedicada. Para más información sobre estas condiciones, consulte [Cómo evitar la fijación de RDS Proxy](rds-proxy-pinning.md).

## Consideraciones para conectarse a PostgreSQL
<a name="rds-proxy-connecting-postgresql"></a>

Si crea un nuevo usuario de base de datos de PostgreSQL para conectarse a RDS Proxy, asegúrese de conceder al usuario el privilegio `CONNECT` en la base de datos. Sin esto, el usuario no puede establecer una conexión. Para obtener más información, consulte [Cómo añadir un nuevo usuario de base de datos a una base de datos PostgreSQL al usar RDS Proxy](rds-proxy-new-db-user.md#rds-proxy-new-db-user-pg).

Cuando un cliente comienza una conexión a una base de datos de PostgreSQL, envía un mensaje de inicio. Este mensaje incluye pares de cadenas de nombres y valores de parámetros. Para obtener detalles, consulte `StartupMessage` en [Formatos de mensaje de PostgreSQL](https://www.postgresql.org/docs/current/protocol-message-formats.html) en la documentación de PostgreSQL. 

Al conectarse a través de un proxy de RDS, el mensaje de inicio puede incluir los siguientes parámetros reconocidos actualmente: 
+  `user` 
+  `database`

 El mensaje de inicio también puede incluir los siguientes parámetros de tiempo de ejecución adicionales: 
+ `[application\$1name](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-APPLICATION-NAME) `
+ `[client\$1encoding](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-CLIENT-ENCODING) `
+ `[DateStyle](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-DATESTYLE) `
+ `[TimeZone](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-TIMEZONE) `
+  `[extra\$1float\$1digits](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-EXTRA-FLOAT-DIGITS) `
+  `[ search\$1path ](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SEARCH-PATH)` 

 Para obtener más información acerca de la mensajería de PostgreSQL, consulte el [Protocolo Frontend/Backend](https://www.postgresql.org/docs/current/protocol.html) en la documentación de PostgreSQL.

 Para PostgreSQL, si usa JDBC, recomendamos lo siguiente para evitar la fijación:
+ Establezca el parámetro de conexión JDBC `assumeMinServerVersion` en al menos `9.0` para evitar la fijación. Esto evita que el controlador JDBC realice un viaje de ida y vuelta adicional durante el inicio de la conexión cuando se ejecuta `SET extra_float_digits = 3`. 
+ Establezca el parámetro de conexión JDBC `ApplicationName` en `any/your-application-name` para evitar la fijación. Al hacerlo, se evita que el JDBC driver realice un viaje de ida y vuelta adicional durante el inicio de la conexión cuando se ejecuta `SET application_name = "PostgreSQL JDBC Driver"`. Tenga en cuenta que el parámetro JDBC es `ApplicationName` pero el parámetro `StartupMessage` de PostgreSQL es `application_name`.

Para obtener más información, consulte [Cómo evitar la fijación de RDS Proxy](rds-proxy-pinning.md). Para obtener más información acerca de la conexión mediante JDBC, consulte [Conexión a la base de datos](https://jdbc.postgresql.org/documentation/setup/) en la documentación de PostgreSQL.

# Administración de un RDS Proxy
<a name="rds-proxy-managing"></a>

 En esta sección, se proporciona información sobre cómo administrar el funcionamiento y la configuración de RDS Proxy. Estos procedimientos ayudan a su aplicación a hacer más eficiente el uso de las conexiones de base de datos y a lograr la máxima reutilización de la conexión. Cuanto más pueda aprovechar la reutilización de la conexión, más sobrecarga de la CPU y la memoria podrá evitar. Esto, a su vez, reduce la latencia de la aplicación y permite que la base de datos dedique más recursos al procesamiento de solicitudes de la aplicación. 

**Topics**
+ [

# Modificación de un RDS Proxy
](rds-proxy-modifying-proxy.md)
+ [

# Cómo añadir un nuevo usuario de base de datos al usar RDS Proxy
](rds-proxy-new-db-user.md)
+ [

# Paso de la autenticación de IAM estándar a la autenticación de IAM integral para RDS Proxy
](rds-proxy-iam-migration.md)
+ [

# Observaciones sobre la conexión de RDS Proxy
](rds-proxy-connections.md)
+ [

# Cómo evitar la fijación de RDS Proxy
](rds-proxy-pinning.md)
+ [

# Eliminación de un RDS Proxy
](rds-proxy-deleting.md)

# Modificación de un RDS Proxy
<a name="rds-proxy-modifying-proxy"></a>

 Puede cambiar determinadas configuraciones asociadas a un proxy después de crearlos. Para ello, modifique el propio proxy, su grupo de destino asociado o ambos. Cada proxy tiene un grupo de destino asociado. 

## Consola de administración de AWS
<a name="rds-proxy-modifying-proxy.console"></a>

**importante**  
Los valores de los campos **Client authentication type** (Tipo de autenticación de cliente) y **IAM authentication (Autenticación de IAM)** se aplican a todos los secretos de Secrets Manager asociados a este proxy. Para especificar valores diferentes para cada secreto, modifique su proxy mediante la AWS CLI o la API.

**Para modificar la configuración de un proxy**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  En el panel de navegación, seleccione **Proxies**. 

1.  En la lista de proxies, elija el proxy cuya configuración desea modificar o vaya a su página de detalles. 

1.  Para **Actions (Acciones)**, elija **Modify (Modificar)**. 

1.  Introduzca o elija las propiedades que desea modificar. Puede modificar lo siguiente: 
   +  **Proxy identifier (Identificador de proxy**: escriba un nuevo identificador para cambiar el nombre del proxy. 
   +  **Idle client connection timeout (Tiempo de espera de inactividad de conexión de cliente)**: especifique un período de tiempo de espera de conexión de cliente inactiva. 
   +  **IAM role (Rol de IAM)**: cambie el rol de IAM utilizado para recuperar los secretos de Secrets Manager. 
**nota**  
No puede crear un nuevo rol de IAM si establece el **esquema de autenticación predeterminado** en la **autenticación de IAM**.
   +  **Secrets Manager secrets (Secretos de Secrets Manager)**: agregue o elimine secretos de Secrets Manager. Estos secretos corresponden a nombres de usuario y contraseñas de la base de datos. 
   +  **Tipo de autenticación de cliente**: cambie el tipo de autenticación de las conexiones del cliente al proxy. 
   +  **IAM Authentication** (Autenticación de IAM): requiera o no permita la autenticación de IAM para las conexiones al proxy. 
   +  **Esquema de autenticación predeterminado**: cambie el esquema de autenticación predeterminado que utiliza el proxy para las conexiones del cliente al proxy y las conexiones del proxy a la base de datos subyacente. 
   +  **Require Transport Layer Security (Requerir Transport Layer Security)**: active o desactive el requisito de Transport Layer Security (TLS). 
   +  **VPC security group (Grupo de seguridad de VPC)**: agregue o quite grupos de seguridad de VPC para que los utilice el proxy. 
   +  **Enable enhanced logging (Habilitar el registro optimizado)**: habilite o deshabilite el registro mejorado. 

1.  Elija **Modify**. 

Si no ha encontrado la configuración mostrada que desea cambiar, utilice el procedimiento siguiente para actualizar el grupo de destino del proxy. El *grupo de destino* asociado con un proxy controla la configuración relacionada con las conexiones de base de datos físicas. Cada proxy tiene un grupo de destino asociado llamado `default`, que se crea automáticamente junto con el proxy. No se puede cambiar el nombre del grupo de destino predeterminado.

 Solo puede modificar el grupo de destino desde la página de detalles del proxy, no desde la lista de la página **Proxies**. 

**Para modificar la configuración de un grupo de destino de proxy**

1.  En la página **Proxies**, vaya a la página de detalles de un proxy. 

1.  En **Target groups (Grupos de destino)**, elija el enlace `default`. Actualmente, todos los proxies tienen un único grupo de destino denominado `default`. 

1.  En la página de detalles del grupo de destino **default (predeterminado)** elija **Modify (Modificar)**. 

1.  Elija nuevas configuraciones para las propiedades que puede modificar: 
   +  **Base de datos**: elija una instancia de base de datos de RDS diferente. 
   +  **Connection pool maximum connections (Conexiones máximas de grupo de conexión)**: ajuste el porcentaje de conexiones disponibles máximas que puede utilizar el proxy. 
   +  **Session pinning filters (Filtros de fijación de sesión)**: (opcional) elija un filtro de fijación de sesión. De este modo se eluden las medidas de seguridad predeterminadas para multiplexar las conexiones de bases de datos en las conexiones del cliente. Actualmente, la configuración no es compatible con PostgreSQL. La única opción es `EXCLUDE_VARIABLE_SETS`. 

     Si se habilita esta configuración, es posible que las variables de sesión de una conexión afecten a otras conexiones. Esto puede provocar errores o problemas de corrección si las consultas dependen de valores de variables de sesión establecidos fuera de la transacción actual. Considere la posibilidad de utilizar esta opción después de comprobar que sea seguro que sus aplicaciones compartan conexiones de bases de datos en las conexiones del cliente.

     Los siguientes patrones pueden considerarse seguros:
     + Instrucciones `SET` en las que no hay ningún cambio en el valor de la variable de sesión efectiva, es decir, no hay ningún cambio en la variable de sesión.
     + Cambia el valor de la variable de sesión y ejecuta una instrucción en la misma transacción.

     Para obtener más información, consulte [Cómo evitar la fijación de RDS Proxy](rds-proxy-pinning.md). 
   +  **Connection borrow timeout (Tiempo de espera de préstamo de conexión)**: ajuste el intervalo de tiempo de espera de préstamo de la conexión. Esta configuración se aplica cuando el número máximo de conexiones ya se está utilizando para el proxy. La configuración determina cuánto tiempo espera el proxy a que una conexión esté disponible antes de devolver un error de tiempo de espera. 
   + **Consutla de inicialización**. Añada una consulta de inicialización o modifique la actual (opcional). Puede especificar una o más instrucciones de SQL para que el proxy se ejecute al abrir cada nueva conexión de base de datos. Normalmente, el ajuste se utiliza con instrucciones de `SET` para garantizar que cada conexión tenga una configuración idéntica. Asegúrese de que la consulta que añada sea válida. Para incluir varias variables en una única instrucción de `SET`, utilice separadores de coma. Por ejemplo:

     ```
     SET variable1=value1, variable2=value2
     ```

     Para varias instrucciones, utilice punto y coma como separador.

    No puede cambiar ciertas propiedades, como el identificador del grupo de destino y el motor de base de datos. 

1.  Elija **Modify target group (Modificar grupo de destino)**. 

## AWS CLI
<a name="rds-proxy-modifying-proxy.cli"></a>

 Para modificar un proxy mediante la AWS CLI, utilice los comandos [modify-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy.html), [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html), [deregister-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/deregister-db-proxy-targets.html) y [register-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/register-db-proxy-targets.html). 

 Con el comando `modify-db-proxy`, puede cambiar propiedades como las siguientes: 
+  El conjunto de secretos de Secrets Manager utilizados por el proxy. 
+  Si se requiere TLS. 
+  El tiempo de espera del cliente inactivo. 
+  Si se debe registrar información adicional de instrucciones de SQL para la depuración. 
+  El rol de IAM utilizado para recuperar secretos de Secrets Manager. 
+  Los grupos de seguridad utilizados por el proxy. 
+ El esquema de autenticación predeterminado asociado al proxy.

 En el ejemplo siguiente se muestra cómo cambiar el nombre de un proxy existente. 

```
aws rds modify-db-proxy --db-proxy-name the-proxy --new-db-proxy-name the_new_name
```

Para modificar la configuración relacionada con la conexión o cambiar el nombre del grupo de destino, utilice el comando `modify-db-proxy-target-group`. Actualmente, todos los proxies tienen un único grupo de destino denominado `default`. Cuando trabaja con este grupo de destino, debe especificar el nombre del proxy y `default` para el nombre del grupo de destino. No se puede cambiar el nombre del grupo de destino predeterminado.

 En el ejemplo siguiente se muestra cómo comprobar primero la configuración de `MaxIdleConnectionsPercent` de un proxy y, a continuación, cambiarla mediante el grupo de destino. 

```
aws rds describe-db-proxy-target-groups --db-proxy-name the-proxy

{
    "TargetGroups": [
        {
            "Status": "available",
            "UpdatedDate": "2019-11-30T16:49:30.342Z",
            "ConnectionPoolConfig": {
                "MaxIdleConnectionsPercent": 50,
                "ConnectionBorrowTimeout": 120,
                "MaxConnectionsPercent": 100,
                "SessionPinningFilters": []
            },
            "TargetGroupName": "default",
            "CreatedDate": "2019-11-30T16:49:27.940Z",
            "DBProxyName": "the-proxy",
            "IsDefault": true
        }
    ]
}

aws rds modify-db-proxy-target-group --db-proxy-name the-proxy --target-group-name default --connection-pool-config '
{ "MaxIdleConnectionsPercent": 75 }'

{
    "DBProxyTargetGroup": {
        "Status": "available",
        "UpdatedDate": "2019-12-02T04:09:50.420Z",
        "ConnectionPoolConfig": {
            "MaxIdleConnectionsPercent": 75,
            "ConnectionBorrowTimeout": 120,
            "MaxConnectionsPercent": 100,
            "SessionPinningFilters": []
        },
        "TargetGroupName": "default",
        "CreatedDate": "2019-11-30T16:49:27.940Z",
        "DBProxyName": "the-proxy",
        "IsDefault": true
    }
}
```

 Con los comandos `deregister-db-proxy-targets` y `register-db-proxy-targets`, puede cambiar a qué instancias de base de datos de RDS está asociado el proxy a través de su grupo de destino. Actualmente, cada proxy puede conectarse a una instancia de base de datos de RDS. El grupo de destino realiza un seguimiento de los detalles de conexión de todas las instancias de base de datos de RDS en una configuración multi-AZ.

 El ejemplo siguiente comienza con un proxy asociado a un clúster de Aurora MySQL denominado `cluster-56-2020-02-25-1399`. El ejemplo muestra cómo cambiar el proxy para que pueda conectarse a un clúster diferente denominado `provisioned-cluster`. 

 Cuando se trabaja con una instancia de base de datos RDS, se especifica la opción `--db-instance-identifier`. 

 El siguiente ejemplo modifica un proxy Aurora MySQL. Un proxy Aurora PostgreSQL tiene el puerto 5432. 

```
aws rds describe-db-proxy-targets --db-proxy-name the-proxy

{
    "Targets": [
        {
            "Endpoint": "instance-9814.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-9814"
        },
        {
            "Endpoint": "instance-8898.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-8898"
        },
        {
            "Endpoint": "instance-1018.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-1018"
        },
        {
            "Type": "TRACKED_CLUSTER",
            "Port": 0,
            "RdsResourceId": "cluster-56-2020-02-25-1399"
        },
        {
            "Endpoint": "instance-4330.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-4330"
        }
    ]
}

aws rds deregister-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier cluster-56-2020-02-25-1399

aws rds describe-db-proxy-targets --db-proxy-name the-proxy

{
    "Targets": []
}

aws rds register-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier provisioned-cluster

{
    "DBProxyTargets": [
        {
            "Type": "TRACKED_CLUSTER",
            "Port": 0,
            "RdsResourceId": "provisioned-cluster"
        },
        {
            "Endpoint": "gkldje.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "gkldje"
        },
        {
            "Endpoint": "provisioned-1.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "provisioned-1"
        }
    ]
}
```

## API de RDS
<a name="rds-proxy-modifying-proxy.api"></a>

 Para modificar un proxy mediante la API de RDS, utilice las operaciones [ModifyDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxy.html), [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html), [DeregisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeregisterDBProxyTargets.html) y [RegisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RegisterDBProxyTargets.html). 

 Con `ModifyDBProxy`, puede cambiar propiedades como las siguientes: 
+  El conjunto de secretos de Secrets Manager utilizados por el proxy. 
+  Si se requiere TLS. 
+  El tiempo de espera del cliente inactivo. 
+  Si se debe registrar información adicional de instrucciones de SQL para la depuración. 
+  El rol de IAM utilizado para recuperar secretos de Secrets Manager. 
+  Los grupos de seguridad utilizados por el proxy. 

Con `ModifyDBProxyTargetGroup`, puede modificar la configuración relacionada con la conexión. Actualmente, todos los proxies tienen un único grupo de destino denominado `default`. Cuando trabaja con este grupo de destino, debe especificar el nombre del proxy y `default` para el nombre del grupo de destino. No se puede cambiar el nombre del grupo de destino predeterminado.

 Con `DeregisterDBProxyTargets` y `RegisterDBProxyTargets`, puede cambiar con qué instancia de base de datos de RDS está asociado el proxy a través de su grupo de destino. Actualmente, cada proxy puede conectarse a una instancia de base de datos RDS. El grupo de destino hace un seguimiento de los detalles de conexión de las instancias de base de datos de RDS en una configuración Multi-AZ. 

# Cómo añadir un nuevo usuario de base de datos al usar RDS Proxy
<a name="rds-proxy-new-db-user"></a>

En algunos casos, podría agregar un nuevo usuario de base de datos a un clúster o una instancia de base de datos de RDS asociado a un proxy. Continúe en función de si utiliza la autenticación estándar con secretos de Secrets Manager o la autenticación de IAM integral.

Si utiliza la autenticación de IAM estándar, siga estas instrucciones:

1. Cree un nuevo secreto de Secrets Manager mediante el procedimiento descrito en [Configuración de credenciales de base de datos para RDS Proxy](rds-proxy-secrets-arns.md). 

1. Actualice el rol de IAM para conceder acceso al RDS Proxy al nuevo secreto de Secrets Manager. Para ello, actualice la sección de recursos de la política del rol de IAM. 

1. Modifique el proxy de RDS para añadir el nuevo secreto de Secrets Manager en **Secretos de Secrets Manager**.

1.  Si el nuevo usuario toma el lugar de uno existente, actualice las credenciales almacenadas en el secreto de Secrets Manager del proxy para el usuario existente. 

Si utiliza la autenticación de IAM integral, debe crear el usuario de la base de datos y configurar los permisos de IAM. Para hacerlo, realice estos pasos:

1. Cree un nuevo usuario de base de datos en la base de datos que coincida con el nombre de usuario o rol de IAM que desee utilizar para la autenticación.

1. Asegúrese de que el usuario de la base de datos esté configurado con el complemento de autenticación de IAM en la base de datos. Consulte [Creación de cuentas de base de datos utilizando autenticación de IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

1. Actualice la política de IAM para conceder el permiso `rds-db:connect` al usuario o rol de IAM, tal y como se describe en [Creación de una política de IAM para la autenticación de IAM integral](rds-proxy-iam-setup.md#rds-proxy-iam-setup-e2e-steps).

1. Asegúrese de que el proxy esté configurado para usar la autenticación de IAM como esquema de autenticación predeterminado.

Con la autenticación de IAM integral, no es necesario administrar las credenciales de la base de datos en secretos de Secrets Manager, ya que las credenciales de IAM se utilizan para la autenticación del cliente al proxy y del proxy a la base de datos. 

## Cómo añadir un nuevo usuario de base de datos a una base de datos PostgreSQL al usar RDS Proxy
<a name="rds-proxy-new-db-user-pg"></a>

Al agregar un nuevo usuario a su base de datos de PostgreSQL, si ha ejecutado el siguiente comando:

```
REVOKE CONNECT ON DATABASE postgres FROM PUBLIC;
```

Otorgue al usuario `rdsproxyadmin` el privilegio `CONNECT` para que pueda supervisar las conexiones en la base de datos de destino. 

```
GRANT CONNECT ON DATABASE postgres TO rdsproxyadmin;
```

También puede permitir que otros usuarios de la base de datos de destino realicen comprobaciones de estado cambiando `rdsproxyadmin` por el usuario de la base de datos del comando anterior.

## Cambio de la contraseña de un usuario de base de datos al usar RDS Proxy
<a name="rds-proxy-changing-db-user-password"></a>

En algunos casos, puede cambiar la contraseña de un usuario de base de datos en una instancia de base de datos de RDS asociado a un proxy. Si es así, actualice el secreto de Secrets Manager correspondiente con la nueva contraseña.

Si utiliza la autenticación de IAM integral, no necesita actualizar ninguna contraseña en secretos de Secrets Manager.

# Paso de la autenticación de IAM estándar a la autenticación de IAM integral para RDS Proxy
<a name="rds-proxy-iam-migration"></a>

 Si actualmente utiliza la autenticación de IAM estándar para RDS Proxy, en la que los clientes se autentican en el proxy mediante IAM pero el proxy se conecta a la base de datos mediante secretos, puede migrar a la autenticación de IAM integral, en la que tanto las conexiones de cliente a proxy como de proxy a base de datos utilizan la autenticación de IAM. 

**Cambio a autenticación integral de IAM**

1. **Actualización de los permisos del rol de IAM de RDS Proxy**

   Cree una política de permisos de proxy actualizada que incluya Secrets Manager y permisos de `rds:db-connect`:

   ```
   # Create updated proxy permission policy
   cat > updated-proxy-policy.json ≪ EOF
   ```

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "GetSecretsValue",
         "Action": [
           "secretsmanager:GetSecretValue"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-1234f"
         ]
       },
       {
         "Sid": "RdsDBConnect",
         "Action": [
           "rds-db:connect"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:rds-db:us-east-1:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/jane_doe"
         ]
       }
     ]
   }
   ```

   Actualice la política del rol del proxy:

   ```
   aws iam put-role-policy \
               --role-name RDSProxyRole \
               --policy-name UpdatedProxyPermissions \
               --policy-document file://updated-proxy-policy.json
   ```

1. Modificación del RDS Proxy para habilitar la autenticación integral de IAM

   ```
   aws rds modify-db-proxy \
     --db-proxy-name my-database-proxy \
     --default-auth-scheme IAM_AUTH \
     --region us-east-1
   ```

   Compruebe que el estado de RDS Proxy sea **disponible** y `DefaultAuthScheme` sea `IAM_AUTH` antes de continuar para garantizar que no haya ningún tiempo de inactividad durante la migración.

   ```
   aws rds describe-db-proxies --db-proxy-name my-database-proxy --region us-east-1
   ```

   Resultado previsto:

   ```
   {
     "DBProxies": [
       {
         "DBProxyName": "my-database-proxy",
         "DBProxyArn": "arn:aws:rds:us-east-1:123456789012:db-proxy:prx-0123456789abcdef",
         "Status": "available",
         ...
         "DefaultAuthScheme": "IAM_AUTH"
       }
     ]
   }
   ```

1. Habilitación de la autenticación de IAM en la base de datos

   ```
   aws rds modify-db-cluster \
     --db-cluster-identifier my-database-cluster \
     --enable-iam-database-authentication \
     --region us-east-1
   ```

1. Configuración del usuario de la base de datos para la autenticación de IAM

   Para RDS para PostgreSQL:

   ```
   GRANT rds_iam TO jane_doe;
   ```

   Para RDS para MySQL y RDS para MariaDB:

   ```
   ALTER USER 'jane_doe' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
   ALTER USER 'jane_doe'@'%' REQUIRE SSL;
   ```

1. No es necesario realizar cambios en el código de aplicación del cliente. El proceso de conexión sigue siendo el mismo:

   Para RDS para PostgreSQL:

   ```
   # Generate authentication token
   export PGPASSWORD=$(aws rds generate-db-auth-token \
     --hostname my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     --port 5432 \
     --username jane_doe \
     --region us-east-1)
   
   # Connect to database through proxy
   psql "host=my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com port=5432 user=jane_doe dbname=postgres password=$PGPASSWORD sslmode=require sslrootcert=us-east-1-bundle.pem"
   ```

   Para RDS para MySQL y RDS para MariaDB:

   ```
   # Generate authentication token
   export MYSQL_PWD=$(aws rds generate-db-auth-token \
     --hostname my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     --port 3306 \
     --username jane_doe \
     --region us-east-1)
   
   # Connect to database through proxy
   mysql -h my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     -P 3306 \
     -u jane_doe \
     --ssl-ca=us-east-1-bundle.pem \
     --enable-cleartext-plugin
   ```

# Observaciones sobre la conexión de RDS Proxy
<a name="rds-proxy-connections"></a>

## Configuración de los valores de conexión
<a name="rds-proxy-connection-pooling-tuning"></a>

Para ajustar la agrupación de conexiones de RDS Proxy, puede modificar la siguiente configuración:
+ [IdleClientTimeout](#rds-proxy-connection-pooling-tuning.idleclienttimeout)
+ [MaxConnectionsPercent](#rds-proxy-connection-pooling-tuning.maxconnectionspercent)
+ [MaxIdleConnectionsPercent](#rds-proxy-connection-pooling-tuning.maxidleconnectionspercent)
+ [ConnectionBorrowTimeout](#rds-proxy-connection-pooling-tuning.connectionborrowtimeout)

### IdleClientTimeout
<a name="rds-proxy-connection-pooling-tuning.idleclienttimeout"></a>

Puede especificar cuánto tiempo puede estar inactiva una conexión del cliente antes de que el proxy la cierre. El valor predeterminado es 1800 segundos (30 minutos). 

Una conexión de cliente se considera *inactiva* cuando la aplicación no envía una nueva solicitud dentro del plazo especificado después de completar la solicitud anterior. La conexión de base de datos subyacente permanece abierta y se devuelve al grupo de conexiones. Por lo tanto, está disponible para reutilizarla para nuevas conexiones de cliente. Si quiere que el proxy elimine de forma proactiva las conexiones obsoletas, considere la posibilidad de reducir el tiempo de espera de conexión del cliente inactivo. Si la carga de trabajo establece conexiones frecuentes con el proxy, considere la posibilidad de aumentar el tiempo de espera de la conexión del cliente inactivo para ahorrar el costo del establecimiento de conexiones.

Esta configuración se representa mediante el campo **Idle client connection timeout** (Tiempo de espera de la conexión de cliente inactivo) en la consola de RDS y la configuración `IdleClientTimeout` en la AWS CLI y la API. Para obtener información sobre cómo cambiar el valor del campo **Idle client connection timeout** (Tiempo de espera de la conexión de cliente inactivo) en la consola de RDS, consulte [Consola de administración de AWS](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Para obtener información sobre cómo cambiar el valor de la configuración `IdleClientTimeout`, consulte el comando de la CLI [modify-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy.html) o la operación de la API [ModifyDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxy.html).

### MaxConnectionsPercent
<a name="rds-proxy-connection-pooling-tuning.maxconnectionspercent"></a>

Puede limitar el número de conexiones que un proxy de RDS puede establecer con la base de datos de destino. Especifique el límite como porcentaje de las conexiones máximas disponibles para la base de datos. Esta configuración se representa mediante el campo **Connection pool maximum connections** (Conexiones máximas de grupo de conexión) en la consola de RDS y la configuración `MaxConnectionsPercent` en la AWS CLI y la API. 

El valor `MaxConnectionsPercent` se expresa como un porcentaje de la configuración de `max_connections` para la instancia de base de datos de RDS que usa el grupo de destino. El proxy no crea todas estas conexiones por adelantado. Esta configuración permite que el proxy establezca estas conexiones a medida que la carga de trabajo las necesita.

Por ejemplo, en una base de datos registrada donde `max_connections` está establecido en 1000 y `MaxConnectionsPercent` está establecido en 95, el proxy de RDS establece 950 conexiones como límite máximo para las conexiones simultáneas a esa base de datos de destino.

Un efecto secundario habitual de que la carga de trabajo alcance el número máximo de conexiones a bases de datos permitidas es el aumento de la latencia general de las consultas, junto con un aumento de la métrica `DatabaseConnectionsBorrowLatency`. Puede supervisar las conexiones a bases de datos que se utilizan actualmente y el total permitido comparando las métricas `DatabaseConnections` y `MaxDatabaseConnectionsAllowed`.

Al configurar este parámetro, tenga en cuenta las siguientes prácticas recomendadas:
+ Deje suficiente margen de conexión para los cambios en el patrón de carga de trabajo. Se recomienda configurar el parámetro al menos un 30 % por encima del uso supervisado máximo reciente. Dado que el proxy de RDS redistribuye las cuotas de conexión a las bases de datos entre varios nodos, los cambios en la capacidad interna pueden requerir al menos un 30 % de margen para conexiones adicionales para evitar un aumento de la latencia de préstamos.
+ El proxy de RDS reserva una cantidad determinada de conexiones para la supervisión activa para facilitar una conmutación por error rápida, el enrutamiento del tráfico y las operaciones internas. La métrica `MaxDatabaseConnectionsAllowed` no incluye estas conexiones reservadas. Representa el número de conexiones disponibles para atender la carga de trabajo y puede ser inferior al valor derivado de la configuración de `MaxConnectionsPercent`.

  Valores de `MaxConnectionsPercent` mínimos recomendados
  + db.t3.small: 30
  + db.t3.medium o superior: 20

Para obtener información sobre cómo cambiar el valor del campo **Connection pool maximum connections** (Conexiones máximas de grupo de conexión) en la consola de RDS, consulte [Consola de administración de AWS](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Para obtener información sobre cómo cambiar el valor de la configuración de `MaxConnectionsPercent`, consulte el comando de la CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) o la operación de la API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

 Para obtener información sobre los límites de conexión de base de datos, consulte [Número máximo de conexiones de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections). 

### MaxIdleConnectionsPercent
<a name="rds-proxy-connection-pooling-tuning.maxidleconnectionspercent"></a>

Puede controlar el número de conexiones de base de datos inactivas que RDS Proxy puede mantener en el grupo de conexiones. De forma predeterminada, RDS Proxy considera que una conexión de base de datos en su grupo está *inactiva* cuando no ha habido actividad en la conexión durante cinco minutos. 

El valor `MaxIdleConnectionsPercent` se expresa como un porcentaje de la configuración de `max_connections` para el grupo de destino de la instancia de base de datos de RDS. El valor predeterminado es del 50 por ciento de `MaxConnectionsPercent` y el límite superior es el valor de `MaxConnectionsPercent`. Por ejemplo, si `MaxConnectionsPercent` es 80, el valor predeterminado de `MaxIdleConnectionsPercent` es 40. Si no se especifica el valor de `MaxConnectionsPercent`, entonces `MaxIdleConnectionsPercent` es 5 para RDS para SQL Server y, para todos los demás motores, el valor predeterminado es 50.

Con un valor alto, el proxy deja un alto porcentaje de conexiones de base de datos inactivas abiertas. Con un valor bajo, el proxy cierra un alto porcentaje de conexiones de base de datos inactivas. Si sus cargas de trabajo son impredecibles, considere establecer un valor alto para `MaxIdleConnectionsPercent`. De este modo, RDS Proxy puede adaptarse a los aumentos de actividad sin abrir muchas conexiones de base de datos nuevas. 

Esta configuración se representa mediante la configuración `MaxIdleConnectionsPercent` de `DBProxyTargetGroup` en la AWS CLI y la API. Para obtener información sobre cómo cambiar el valor de la configuración de `MaxIdleConnectionsPercent`, consulte el comando de la CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) o la operación de la API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

 Para obtener información sobre los límites de conexión de base de datos, consulte [Número máximo de conexiones de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections). 

### ConnectionBorrowTimeout
<a name="rds-proxy-connection-pooling-tuning.connectionborrowtimeout"></a>

Puede elegir cuánto tiempo espera RDS Proxy a que una conexión a la base de datos del grupo de conexiones esté disponible para su uso antes de devolver un error de tiempo de espera. El valor predeterminado es de 120 segundos. Esta configuración se aplica cuando el número de conexiones está al máximo, por lo que no hay conexiones disponibles en el grupo de conexiones. Esto también se aplica si no hay ninguna instancia de base de datos adecuada disponible para gestionar la solicitud, como cuando se esté realizando una operación de conmutación por error. Con esta configuración, puede establecer el mejor periodo de espera para la aplicación sin cambiar el tiempo de espera de la consulta en el código de la aplicación.

Esta configuración se representa mediante el campo **Connection borrow timeout** (Tiempo de espera de préstamo de conexión) en la consola de RDS o en la configuración de `ConnectionBorrowTimeout` de `DBProxyTargetGroup` de la AWS CLI o de la API. Para obtener información sobre cómo cambiar el valor del campo **Connection borrow timeout** (Tiempo de espera de préstamo de conexión) en la consola de RDS, consulte [Consola de administración de AWS](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Para obtener información sobre cómo cambiar el valor de la configuración de `ConnectionBorrowTimeout`, consulte el comando de la CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) o la operación de la API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

## Conexiones de cliente y base de datos
<a name="rds-proxy-connection-life"></a>

Las conexiones de la aplicación a RDS Proxy se conocen como conexiones de cliente. Las conexiones desde un proxy a la base de datos son conexiones de base de datos. Cuando se utiliza RDS Proxy, las conexiones de cliente terminan en el proxy, mientras que las conexiones de la base de datos se administran en RDS Proxy.

La agrupación de conexiones en la aplicación puede ofrecer la ventaja de reducir el establecimiento de conexiones recurrentes entre la aplicación y RDS Proxy.

Tenga en cuenta los siguientes elementos de configuración antes de implementar un grupo de conexiones en la aplicación:
+ Duración máxima de la conexión del cliente: RDS Proxy impone una vida útil máxima de 24 horas para las conexiones del cliente. Este valor no se puede configurar. Configure su grupo con una vida útil máxima de conexión inferior a 24 horas para evitar caídas inesperadas en la conexión del cliente. 
+ Tiempo de espera de inactividad en la conexión de cliente: RDS Proxy impone un tiempo máximo de inactividad para las conexiones del cliente. Configure su grupo con un valor de tiempo de espera de conexión inactiva inferior al tiempo de espera de la conexión de cliente para RDS Proxy, a fin de evitar caídas inesperadas en la conexión.

El número máximo de conexiones del cliente configuradas en el grupo de conexiones de la aplicación no tiene por qué limitarse a la configuración **max\$1connections** de RDS Proxy

La agrupación de conexiones de clientes prolonga la vida útil de las conexiones del cliente. Si las conexiones se bloquean, agrupar las conexiones de cliente podría reducir la eficiencia de la multiplexación. Las conexiones del cliente que están bloqueadas pero inactivas en el grupo de conexiones de la aplicación siguen teniendo una conexión de base de datos e impiden que otras conexiones del cliente reutilicen la conexión a la base de datos. Revise los registros de proxy para comprobar si las conexiones se fijan.

**nota**  
RDS Proxy cierra las conexiones de base de datos un poco después de 24 horas, cuando ya no están en uso. El proxy realiza esta acción independientemente del valor de configuración máxima de conexiones inactivas.

# Cómo evitar la fijación de RDS Proxy
<a name="rds-proxy-pinning"></a>

 La multiplexación es más eficiente cuando las solicitudes de base de datos no dependen de la información de estado de solicitudes anteriores. En ese caso, RDS Proxy puede reutilizar una conexión en la conclusión de cada transacción. Algunos ejemplos de dicha información de estado incluyen la mayoría de las variables y parámetros de configuración que puede cambiar a través de instrucciones `SET` o `SELECT`. Las transacciones SQL en una conexión de cliente pueden multiplexar entre conexiones de base de datos subyacentes de forma predeterminada. 

 Las conexiones al proxy pueden entrar en un estado conocido como *fijación*. Cuando se fija una conexión, cada transacción posterior utiliza la misma conexión de base de datos subyacente hasta que finaliza la sesión. Otras conexiones de cliente tampoco pueden reutilizar esa conexión de base de datos hasta que finaliza la sesión. La sesión finaliza cuando se interrumpe la conexión del cliente. 

 RDS Proxy fija automáticamente una conexión de cliente a una conexión de base de datos específica cuando detecta un cambio de estado de sesión que no es apropiado para otras sesiones. La fijación reduce la eficacia de la reutilización de la conexión. Si todas o casi todas las conexiones experimentan asignación, plantéese modificar el código de la aplicación o la carga de trabajo para reducir las condiciones que provocan la fijación. 

Por ejemplo, su aplicación cambia una variable de sesión o un parámetro de configuración. En este caso, las instrucciones posteriores pueden depender de que la nueva variable o parámetro esté en vigor. Por lo tanto, cuando RDS Proxy procesa solicitudes para cambiar las variables de sesión o los parámetros de configuración, fija esa sesión a la conexión de base de datos. De esta forma, el estado de la sesión permanece en vigor para todas las transacciones posteriores en la misma sesión. 

 Para algunos motores de base de datos, esta regla no se aplica a todos los parámetros que se pueden establecer. RDS Proxy realiza un seguimiento de ciertas sentencias y variables. Por lo tanto, RDS Proxy no fija la sesión cuando las modifica. En ese caso, RDS Proxy solo reutiliza la conexión para otras sesiones que tengan los mismos valores para esa configuración. Para obtener más información sobre lo que RDS Proxy rastrea para un motor de base de datos, consulte lo siguiente: 
+ [Qué rastrea el proxy RDS para las bases de datos de RDS para SQL Server](#rds-proxy-pinning.sql-server-tracked-vars)
+ [Qué seguimiento hace RDS Proxy para bases de datos de RDS para MariaDB y RDS para MySQL](#rds-proxy-pinning.mysql-tracked-vars)

## Qué rastrea el proxy RDS para las bases de datos de RDS para SQL Server
<a name="rds-proxy-pinning.sql-server-tracked-vars"></a>

RDS Proxy realiza un seguimiento de las siguientes instrucciones de SQL Server:
+ `USE`
+ `SET ANSI_NULLS`
+ `SET ANSI_PADDING`
+ `SET ANSI_WARNINGS`
+ `SET ARITHABORT`
+ `SET CONCAT_NULL_YIELDS_NULL`
+ `SET CURSOR_CLOSE_ON_COMMIT`
+ `SET DATEFIRST`
+ `SET DATEFORMAT`
+ `SET LANGUAGE`
+ `SET LOCK_TIMEOUT`
+ `SET NUMERIC_ROUNDABORT`
+ `SET QUOTED_IDENTIFIER`
+ `SET TEXTSIZE`
+ `SET TRANSACTION ISOLATION LEVEL`

## Qué seguimiento hace RDS Proxy para bases de datos de RDS para MariaDB y RDS para MySQL
<a name="rds-proxy-pinning.mysql-tracked-vars"></a>

RDS Proxy realiza un seguimiento de las siguientes instrucciones de MariaDB y MySQL:
+ DROP DATABASE
+ DROP SCHEMA
+ USE

RDS Proxy realiza un seguimiento de las siguientes variables de MySQL y MariaDB:
+ `AUTOCOMMIT`
+ `AUTO_INCREMENT_INCREMENT`
+ `CHARACTER SET (or CHAR SET)`
+ `CHARACTER_SET_CLIENT`
+ `CHARACTER_SET_DATABASE`
+ `CHARACTER_SET_FILESYSTEM`
+ `CHARACTER_SET_CONNECTION`
+ `CHARACTER_SET_RESULTS`
+ `CHARACTER_SET_SERVER`
+ `COLLATION_CONNECTION`
+ `COLLATION_DATABASE`
+ `COLLATION_SERVER`
+ `INTERACTIVE_TIMEOUT`
+ `NAMES`
+ `NET_WRITE_TIMEOUT`
+ `QUERY_CACHE_TYPE`
+ `SESSION_TRACK_SCHEMA`
+ `SQL_MODE`
+ `TIME_ZONE`
+ `TRANSACTION_ISOLATION (or TX_ISOLATION)`
+ `TRANSACTION_READ_ONLY (or TX_READ_ONLY)`
+ `WAIT_TIMEOUT`

**nota**  
RDS Proxy realiza un seguimiento de los cambios en las variables `TRANSACTION_ISOLATION` y `TRANSACTION_READ_ONLY` cuando se establecen en el ámbito de la sesión. No obstante, si las establece en el ámbito de la siguiente transacción, RDS Proxy bloquea las conexiones. Este comportamiento se aplica tanto si utiliza una instrucción `SET` como una instrucción `SET TRANSACTION` para configurar estos valores.

## Minimizar la fijación
<a name="rds-proxy-pinning.minimizing"></a>

 El ajuste del rendimiento para RDS Proxy implica intentar maximizar la reutilización de la conexión en el nivel de transacción (multiplexación) minimizando la fijación. 

Puede minimizar la fijación, puede realizar lo siguiente: 
+  Evite las solicitudes de base de datos innecesarias que puedan provocar la fijación. 
+  Establezca variables y parámetros de configuración de forma coherente en todas las conexiones. De esta forma, es más probable que las sesiones posteriores reutilicen conexiones que tengan esa configuración particular. 

   Sin embargo, en el caso de PostgreSQL, el establecimiento de una variable conduce a la fijación de sesión. 
+  Para una base de datos de familia de motores MySQL, aplique un filtro de sesión de fijación al proxy. Puede eximir a ciertos tipos de operaciones de asignar la sesión si sabe que hacerlo no afecta al correcto funcionamiento de la fijación. 
+  Consulte la frecuencia con la que se produce la fijación mediante la supervisión de la métrica de Amazon CloudWatch `DatabaseConnectionsCurrentlySessionPinned`. Para obtener información sobre esta y otras métricas de CloudWatch, consulte [Supervisión de las métricas de RDS Proxy con Amazon CloudWatchSupervisión de RDS Proxy con CloudWatch](rds-proxy.monitoring.md). 
+  Si utiliza instrucciones `SET` para realizar una inicialización idéntica para cada conexión de cliente, puede hacerlo sin dejar de mantener la multiplexación en el nivel de transacción. En este caso, mueva las instrucciones que configuran el estado de la sesión inicial a la consulta de inicialización utilizada por un proxy. Esta propiedad es una cadena que contiene una o varias instrucciones SQL, separadas por punto y coma. 

   Por ejemplo, puede definir una consulta de inicialización para un proxy que establezca determinados parámetros de configuración. A continuación, RDS Proxy aplica esa configuración cada vez que configura una nueva conexión para ese proxy. Puede eliminar las instrucciones `SET` correspondientes de su código de aplicación, para que no interfieran con la multiplexación en el nivel de transacción. 

   Para obtener métricas acerca de la frecuencia con la que se produce la fijación de un proxy, consulte [Supervisión de las métricas de RDS Proxy con Amazon CloudWatchSupervisión de RDS Proxy con CloudWatch](rds-proxy.monitoring.md). 

## Condiciones que provocan la fijación de todas las familias de motores
<a name="rds-proxy-pinning.all"></a>

 El proxy fija la sesión a la conexión actual en las siguientes situaciones en las que la multiplexación podría provocar un comportamiento inesperado: 
+ Cualquier instrucción con un tamaño de texto superior a 16 KB hace que el proxy fije la sesión.

## Condiciones que provocan la fijación para RDS para Microsoft SQL Server
<a name="rds-proxy-pinning.sqlserver"></a>

 Para RDS para SQL Server, las siguientes interacciones también producen fijación: 
+ Uso de varios conjuntos de resultados activos (MARS). Para obtener información sobre MARS, consulte la documentación de [SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/native-client/features/using-multiple-active-result-sets-mars?view=sql-server-ver16).
+ Usar la comunicación del coordinador de transacciones distribuidas (DTC).
+ Crear tablas, transacciones, cursores o estados preparados temporales.
+ Utilizar las siguientes instrucciones:`SET`
  + `SET ANSI_DEFAULTS`
  + `SET ANSI_NULL_DFLT`
  + `SET ARITHIGNORE`
  + `SET DEADLOCK_PRIORITY`
  + `SET FIPS_FLAGGER`
  + `SET FMTONLY`
  + `SET FORCEPLAN`
  + `SET IDENTITY_INSERT`
  + `SET NOCOUNT`
  + `SET NOEXEC`
  + `SET OFFSETS`
  + `SET PARSEONLY`
  + `SET QUERY_GOVERNOR_COST_LIMIT`
  + `SET REMOTE_PROC_TRANSACTIONS`
  + `SET ROWCOUNT`
  + `SET SHOWPLAN_ALL`, `SHOWPLAN_TEXT`, y `SHOWPLAN_XML`
  + `SET STATISTICS`
  + `SET XACT_ABORT`

## Condiciones que provocan la fijación para RDS para MariaDB y RDS para MySQL
<a name="rds-proxy-pinning.mysql"></a>

 Para MariaDB y MySQL, las siguientes interacciones también producen una fijación: 
+ Las instrucciones de bloqueo de tabla explícitas `LOCK TABLE`, `LOCK TABLES` o `FLUSH TABLES WITH READ LOCK` hacen que el proxy fije la sesión. 
+ Creación de bloqueos con nombre mediante`GET_LOCK`provoca que el proxy instale la sesión. 
+ El establecimiento de una variable de usuario o de sistema (con algunas excepciones) asigna la sesión al proxy. Si esto limita significativamente la reutilización de la conexión, puede configurar las operaciones `SET` para evitar la fijación. Para ello, ajuste la propiedad de los filtros de fijación de la sesión. Para obtener más información, consulte [Creación de un proxy para Amazon RDS](rds-proxy-creating.md) y [Modificación de un RDS Proxy](rds-proxy-modifying-proxy.md).
+ La creación de una tabla temporal hace que el proxy fije la sesión. De esta forma, el contenido de la tabla temporal se conserva a lo largo de la sesión con independencia de los límites de la transacción. 
+ La llamada a las funciones `ROW_COUNT` y `FOUND_ROWS` a veces provoca fijación. 
+ Las instrucciones preparadas hacen que el proxy fije la sesión. Esta regla se aplica si la instrucción preparada utiliza texto SQL o el protocolo binario. 
+ El proxy de RDS no fija las conexiones cuando se utiliza SET LOCAL.
+ La llamada a procedimientos almacenados y funciones almacenadas no causa fijación. El proxy de RDS no detecta ningún cambio de estado de sesión resultante de dichas llamadas. Asegúrese de que su aplicación no cambie el estado de la sesión dentro de las rutinas almacenadas si confía en que ese estado de sesión vaya a persistir en las transacciones. Por ejemplo, RDS Proxy no es compatible actualmente con un procedimiento almacenado que crea una tabla temporal que persiste a través de todas las transacciones. 
+ Consultas con comentarios ejecutables para MySQL (sintaxis /\$1\$1 … \$1/) o MariaDB (sintaxis /\$1M\$1 … \$1/) provocan bloqueos. RDS Proxy no puede analizar el SQL incrustado en estos comentarios para realizar un seguimiento de los cambios en el estado de la sesión.

 Si tiene conocimientos especializados sobre el comportamiento de la aplicación, puede omitir el comportamiento de fijación de determinadas instrucciones de aplicación. Para ello, elija la opción **Filtro de fijación de sesión** al crear el proxy. Actualmente, puede desactivar la fijación de sesión para establecer variables de sesión y valores de configuración. 

## Condiciones que provocan la fijación para RDS para PostgreSQL
<a name="rds-proxy-pinning.postgres"></a>

 Para PostgreSQL, las siguientes interacciones también producen fijación: 
+  Uso de comandos `SET`.
+  Uso de los comandos `PREPARE`, `DISCARD`, `DEALLOCATE` o `EXECUTE` para gestionar las instrucciones preparadas.
+  Creación de secuencias, tablas o vistas temporales.
+  Declaración de cursores.
+  Descartar el estado de la sesión.
+  Escucha en un canal de notificación.
+  Carga de un módulo de biblioteca como `auto_explain`.
+  Manipulación de secuencias mediante el uso de funciones como `nextval` y `setval`.
+  Interacción con bloqueos mediante el uso de funciones como `pg_advisory_lock` y `pg_try_advisory_lock`. 
**nota**  
RDS Proxy no fija los bloqueos consultivos en la transacción, específicamente `pg_advisory_xact_lock`, `pg_advisory_xact_lock_shared`, `pg_try_advisory_xact_lock` y `pg_try_advisory_xact_lock_shared`.
+ Cómo configurar un parámetro o restablecerlo a su valor predeterminado. En concreto, el uso de comandos `SET` y `set_config` para asignar valores predeterminados a las variables de sesión.
+ La llamada a procedimientos almacenados y funciones almacenadas no causa fijación. El proxy de RDS no detecta ningún cambio de estado de sesión resultante de dichas llamadas. Asegúrese de que su aplicación no cambie el estado de la sesión dentro de las rutinas almacenadas si confía en que ese estado de sesión vaya a persistir en las transacciones. Por ejemplo, RDS Proxy no es compatible actualmente con un procedimiento almacenado que crea una tabla temporal que persiste a través de todas las transacciones. 
+ Descarte del estado de la sesión. Si utiliza bibliotecas de agrupamiento de conexiones con la consulta `DISCARD ALL` configurada como consulta de restablecimiento, el proxy de RDS fija la conexión del cliente en el momento del lanzamiento. Esto reduce la eficiencia de multiplexación del proxy y puede provocar resultados inesperados, ya que el comando `DISCARD ALL` puede interferir con la administración del estado de la sesión.

# Eliminación de un RDS Proxy
<a name="rds-proxy-deleting"></a>

 Puede eliminar un proxy cuando ya no lo necesite. O podría eliminar un proxy si pone la instancia de base de datos o el clúster asociado con él fuera de servicio. 

## Consola de administración de AWS
<a name="rds-proxy-deleting.console"></a>

**Para eliminar un proxy**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  En el panel de navegación, seleccione **Proxies**. 

1.  Elija el proxy que desea eliminar de la lista. 

1.  Elija **Delete Proxy (Eliminar proxy)**. 

## AWS CLI
<a name="rds-proxy-deleting.CLI"></a>

 Para eliminar un proxy de base de datos, utilice el comando de la AWS CLI [delete-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-proxy.html). Para quitar asociaciones relacionadas, utilice también el comando [deregister-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/deregister-db-proxy-targets.html). 

```
aws rds delete-db-proxy --name proxy_name
```

```
aws rds deregister-db-proxy-targets
    --db-proxy-name proxy_name
    [--target-group-name target_group_name]
    [--target-ids comma_separated_list]       # or
    [--db-instance-identifiers instance_id]       # or
    [--db-cluster-identifiers cluster_id]
```

## API de RDS
<a name="rds-proxy-deleting.API"></a>

 Para eliminar un proxy de base de datos, llame a la función de la API de Amazon RDS [DeleteDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBProxy.html). Para eliminar elementos relacionados y asociaciones, llame también a las funciones [DeleteDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBProxyTargetGroup.html) y [DeregisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeregisterDBProxyTargets.html). 

# Trabajo con puntos de enlace del proxy de Amazon RDS
<a name="rds-proxy-endpoints"></a>

Los puntos de conexión de RDS Proxy proporcionan formas flexibles y eficientes de administrar las conexiones de bases de datos, lo que mejora la escalabilidad, la disponibilidad y la seguridad. Con los puntos de conexión del proxy, puede:
+ **Simplificar la supervisión y la resolución de problemas**: use varios puntos de conexión para realizar un seguimiento y administrar conexiones de diferentes aplicaciones de forma independiente.

**Topics**
+ [

## Información general de los puntos de enlace de proxy
](#rds-proxy-endpoints-overview)
+ [

## Limitaciones para los puntos de conexión de proxy
](#rds-proxy-endpoints-limits)
+ [

## Puntos de conexión de proxy para clústeres de bases de datos de Multi-AZ
](#rds-proxy-endpoints-overview-maz)
+ [

## Acceso a las bases de datos de RDS en todas las VPC
](#rds-proxy-cross-vpc)
+ [

# Creación de un punto de enlace de proxy
](rds-proxy-endpoints.CreatingEndpoint.md)
+ [

# Visualización de puntos de enlace de proxy
](rds-proxy-endpoints.DescribingEndpoint.md)
+ [

# Modificación de un punto de enlace de proxy
](rds-proxy-endpoints.ModifyingEndpoint.md)
+ [

# Eliminación de un punto de enlace de proxy
](rds-proxy-endpoints.DeletingEndpoint.md)

## Información general de los puntos de enlace de proxy
<a name="rds-proxy-endpoints-overview"></a>

Trabajar con puntos de conexión de RDS Proxy implica los mismos tipos de procedimientos que con los puntos de conexión de instancia de RDS. Si no está familiarizado con los puntos de enlace de RDS, puede encontrar más información en [Conexión a una instancia de base de datos que ejecuta el motor de base de datos de MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) y [Conexión a una instancia de base de datos que ejecuta el motor de base de datos de PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html). 

Cuando cree un punto de conexión del proxy, puede asociarlo con una nube privada virtual (VPC) diferente de la que utiliza la VPC del proxy. Esto le permite conectarse al proxy desde otra VPC, como una utilizada por una aplicación diferente dentro de la organización. 

Para obtener información acerca de los límites asociados a los puntos de enlace de proxy, consulte [Limitaciones para los puntos de conexión de proxy](#rds-proxy-endpoints-limits). 

RDS Proxy registra el prefijo de cada entrada con el nombre del punto de conexión del proxy asociado. Este puede ser el nombre especificado para un punto de conexión definido por el usuario o el nombre `default` especial para el punto de conexión de lectura o escritura predeterminado de un proxy.

Cada punto de conexión de proxy tiene su propio conjunto de métricas de CloudWatch. Supervise las métricas de todos los puntos de conexión de proxy, un punto de conexión específico o de todos los puntos de conexión de lectura o escritura o de solo lectura de un proxy. Para obtener más información, consulte [Supervisión de las métricas de RDS Proxy con Amazon CloudWatchSupervisión de RDS Proxy con CloudWatch](rds-proxy.monitoring.md). 

Un punto de enlace del proxy utiliza el mismo mecanismo de autenticación que su proxy asociado. El proxy de RDS configura automáticamente permisos y autorizaciones para el punto de enlace definido por el usuario, de acuerdo con las propiedades del proxy asociado. 

## Limitaciones para los puntos de conexión de proxy
<a name="rds-proxy-endpoints-limits"></a>

Los puntos de conexión de RDS Proxy tienen las siguientes limitaciones:
+  El punto de conexión predeterminado del proxy de RDS no se puede modificar. 
+  El número máximo de puntos de enlace definidos por el usuario para un proxy es 20. Por lo tanto, un proxy puede tener hasta 21 puntos de enlace: el punto de enlace predeterminado, más 20 que cree. 
+  Cuando asocia puntos de enlace adicionales con un proxy, RDS Proxy determina automáticamente qué instancias de base de datos del clúster se utilizarán para cada punto de enlace. 
+  Para los tipos de redes de punto de conexión de IPv6 o de doble pila, la VPC y las subredes deben estar configuradas para admitir el tipo de red seleccionado. 

Al crear un proxy, RDS crea automáticamente un punto de conexión de VPC para una comunicación segura entre las aplicaciones y la base de datos. El punto de conexión de VPC es visible y se puede acceder a él desde la consola de Amazon VPC.

Al agregar un nuevo punto de conexión de proxy, se aprovisiona un punto de conexión de interfaz de AWS PrivateLink. Si agrega uno o más puntos de conexión al proxy, incurrirá en cargos adicionales. Para obtener más información, consulte [Precios de proxy de RDS](https://aws.amazon.com/rds/proxy/pricing/).

## Puntos de conexión de proxy para clústeres de bases de datos de Multi-AZ
<a name="rds-proxy-endpoints-overview-maz"></a>

De forma predeterminada, el punto de conexión al que se conecta cuando utiliza RDS Proxy con un clúster de bases de datos Multi-AZ tiene capacidad de lectura o escritura. Como resultado, este punto de conexión envía todas las solicitudes a la instancia del escritor del clúster. Todas esas conexiones se descontarán del valor `max_connections` de la instancia del escritor. Si su proxy está asociado con un clúster de bases de datos de Multi-AZ, puede crear puntos de conexión de lectura o escritura o de solo lectura adicionales para ese proxy.

Puede utilizar un punto de conexión de solo lectura con su proxy para consultas de solo lectura. Para hacerlo, tiene que hacer lo mismo que para usar el punto de conexión de lector para un clúster de bases de datos de Multi-AZ Esto le permite aprovechar la escalabilidad de lectura de un clúster de bases de datos de Multi-AZ con una o más instancias de base de datos de lector. Puede ejecutar más consultas simultáneas y realizar más conexiones simultáneas empleando un punto de conexión de solo lectura y agregando más instancias de base de datos de lector a su clúster de bases de datos de Multi-AZ, según sea necesario. Estos puntos de enlace del lector ayudan a mejorar la escalabilidad de lectura de sus aplicaciones que requieren un uso intensivo de consultas. Los puntos de enlace del lector también ayudan a mejorar la disponibilidad de las conexiones si una instancia de base de datos de lector del clúster deja de estar disponible. 

### Puntos de conexión de lector para clústeres de base de datos Multi-AZ
<a name="rds-proxy-endpoints-reader-stub"></a>

 Con RDS Proxy, puede crear y usar puntos de enlace del lector. Sin embargo, estos puntos de conexión solo funcionan para proxies asociados con clústeres de base de datos de Multi-AZ. Si utiliza la CLI o API de RDS, es posible que vea el atributo de `TargetRole` con un valor de `READ_ONLY`. Puede aprovechar estos proxy cambiando el destino de un proxy de una instancia de base de datos de RDS a un clúster de bases de datos multi-AZ.

 Puede crear puntos de conexión de solo lectura, denominados *puntos de conexión de lector*, y conectarse a estos al usar RDS Proxy con los clústeres de base de datos de Multi-AZ.

#### Cómo los puntos de enlace del lector ayudan a la disponibilidad de las aplicaciones
<a name="rds-proxy-endpoints-reader-hapa"></a>

 A veces, es posible que alguna instancia de lector en el clúster no esté disponible. En esos casos, las conexiones que utilizan un punto de conexión de lector de un proxy de base de datos se pueden recuperar más rápidamente que las que utilizan el punto de conexión de lector del clúster de bases de datos de Multi-AZ. RDS Proxy solo enruta las conexiones a las instancias de lector disponibles en el clúster. No hay retraso debido al almacenamiento en caché de DNS cuando una instancia deja de estar disponible. 

 Si la conexión es multiplexada, RDS Proxy dirige las consultas posteriores a una instancia de lector diferente sin interrupciones en su aplicación. Si una instancia de lectura no está disponible, se cierran todas las conexiones de cliente a ese punto de conexión de la instancia. 

 Si la conexión está anclada, la siguiente consulta en la conexión devuelve un error. Sin embargo, la aplicación puede volver a conectarse inmediatamente al mismo punto de conexión de proxy. El proxy de RDS enruta la conexión a una instancia de base de datos de lector diferente que se encuentra en estado `available`. Cuando se vuelve a conectar manualmente, RDS Proxy no comprueba el retraso de reproducción entre la instancia de lector antigua y nueva. 

 Si su clúster de bases de datos Multi-AZ no tiene instancias de lector disponibles, RDS Proxy intentará conectarse a un punto de conexión de lector cuando esté disponible. Si no hay instancias de lector disponibles dentro del periodo de tiempo de espera de préstamo de conexión, se produce un error en el intento de conexión. Si una instancia de lector está disponible, el intento de conexión se lleva a cabo correctamente. 

#### Cómo los puntos de enlace del lector ayudan a la escalabilidad de las consultas
<a name="rds-proxy-endpoints-reader-scalability"></a>

 Los puntos de conexión del lector de un proxy contribuyen a la escalabilidad de las consultas de clúster de bases de datos de Multi-AZ de las siguientes maneras: 
+  Cuando sea práctico, RDS Proxy utiliza la misma instancia de base de datos de lector para todos los problemas de consultas mediante una conexión de punto de enlace del lector en particular. De esta manera, un conjunto de consultas relacionadas en las mismas tablas puede aprovechar el almacenamiento en caché, la optimización del plan y demás, en una instancia de base de datos particular. 
+  Si una instancia de base de datos de lector deja de estar disponible, el efecto en la aplicación depende de si la sesión está multiplexada o anclada. Si la sesión está multiplexada, RDS Proxy enruta las consultas posteriores a una instancia de base de datos de lector diferente sin acciones por su parte. Si la sesión está anclada, la aplicación recibe un error y debe volver a conectarse. Puede volver a conectarse al punto de enlace del lector inmediatamente y RDS Proxy enruta la conexión a una instancia de base de datos de lector disponible. Para obtener más información acerca de la multiplexación y el anclaje de sesiones de proxy, consulte [Información general de los conceptos de RDS Proxy](rds-proxy.howitworks.md#rds-proxy-overview). 

## Acceso a las bases de datos de RDS en todas las VPC
<a name="rds-proxy-cross-vpc"></a>

 De forma predeterminada, los componentes de su pila de tecnología de RDS están todos en la misma Amazon VPC. Por ejemplo, supongamos que una aplicación que se ejecuta en una instancia de Amazon EC2 se conecta a una instancia de base de datos de Amazon RDS. En este caso, el servidor de la aplicación y la base de datos deben estar dentro de la misma VPC. 

 Con RDS Proxy, puede configurar el acceso a una instancia de base de datos de Amazon RDS en una VPC a partir de recursos de otra VPC, como las instancias de EC2. Por ejemplo, la organización puede tener varias aplicaciones que tengan acceso a los mismos recursos de base de datos. Cada aplicación puede estar en su propia VPC. 

 A fin de habilitar el acceso entre VPC, cree un nuevo punto de enlace para el proxy. El propio proxy reside en la misma VPC que la instancia de base de datos de Amazon RDS. Sin embargo, el punto de enlace en VPC reside en la otra VPC, junto con otros recursos, como las instancias EC2. El punto de enlace en VPC está asociado con subredes y grupos de seguridad de la misma VPC que EC2 y otros recursos. Estas asociaciones permiten conectarse al punto de enlace desde las aplicaciones que, de lo contrario, no pueden acceder a la base de datos debido a las restricciones de la VPC. 

 Los siguientes pasos explican cómo crear y acceder a un punto de enlace en VPC a través de RDS Proxy: 

1.  Cree dos VPC o elija dos VPC que ya utilice para el trabajo en RDS. Cada VPC debe tener sus propios recursos de red asociados, como una puerta de enlace de Internet, tablas de enrutamiento, subredes y grupos de seguridad. Si solo tiene una VPC, puede consultar [Introducción a Amazon RDS](CHAP_GettingStarted.md) para conocer los pasos a fin de configurar otra VPC para que use RDS con éxito. También puede examinar la VPC existente en la consola de Amazon EC2 para ver los tipos de recursos que conectar entre sí. 

1.  Cree un proxy de base de datos asociado con la instancia de base de datos de Amazon RDS al que desea conectarse. Siga el procedimiento indicado en [Creación de un proxy para Amazon RDS](rds-proxy-creating.md). 

1.  En la página de **Details (Detalles)** para su proxy en la consola de RDS, en la pestaña de **Proxy endpoints (Puntos de enlace de proxy)**, elija **Create endpoint (Crear punto de enlace)**. Siga el procedimiento indicado en [Creación de un punto de enlace de proxy](rds-proxy-endpoints.CreatingEndpoint.md). 

1.  Elija si desea que el punto de enlace en VPC sea de lectura y escritura o de solo lectura. 

1.  En lugar de aceptar el valor predeterminado de la misma VPC que la instancia de base de datos de Amazon RDS, elija una VPC diferente. Esta VPC debe estar en la misma región de AWS que la VPC donde reside el proxy. 

1.  Ahora, en lugar de aceptar los valores predeterminados para subredes y grupos de seguridad de la misma VPC que la instancia de base de datos de Amazon RDS, haga nuevas selecciones. Estos se basen en las subredes y los grupos de seguridad de la VPC que eligió. 

1. No es necesario cambiar las opciones de configuración de los secretos de Secrets Manager. Las mismas credenciales funcionan para todos los puntos de enlace de proxy, independientemente de la VPC en la que se encuentre cada punto de enlace. Del mismo modo, al utilizar la autenticación de IAM, la configuración y los permisos de IAM funcionan de manera uniforme en todos los puntos de conexión del proxy, incluso cuando los puntos de conexión están en diferentes VPC. No se requiere ninguna configuración de IAM adicional por punto de conexión.

1.  Espere a que el punto de enlace nuevo alcance el estado de **Available (Disponible)**. 

1.  Anote el nombre completo del punto de enlace. Este es el valor que termina en `Region_name.rds.amazonaws.com` que proporciona como parte de la cadena de conexión para la aplicación de base de datos. 

1.  Acceda al punto de enlace nuevo desde un recurso en la misma VPC que el punto de enlace. Una forma sencilla de probar este proceso es crear una instancia de EC2 nueva en esta VPC. A continuación, puede iniciar sesión en la instancia de EC2 y ejecutar los comandos `mysql` o `psql` para conectarse mediante el valor de punto de conexión en la cadena de conexión. 

# Creación de un punto de enlace de proxy
<a name="rds-proxy-endpoints.CreatingEndpoint"></a>

Para crear un punto de conexión proxy, siga estas instrucciones:

## Consola
<a name="rds-proxy-endpoints.CreatingEndpoint.CON"></a>

**Para crear un punto de enlace de proxy**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  En el panel de navegación, seleccione **Proxies**. 

1.  Haga clic en el nombre del proxy para el que desea crear un punto de enlace nuevo. 

    Aparecerá la página de detalles de ese proxy. 

1.  En la sección de **Proxy endpoints (Puntos de enlace de proxy)**, elija ** Crear endpoint proxy (Crear punto de enlace de proxy)**. 

    Aparecerá la ventana de **Create proxy endpoint (Crear punto de enlace de proxy)**. 

1.  Para **Proxy endpoint name (Nombre del punto de enlace de proxy)**, escriba un nombre descriptivo de su elección. 

1.  Para **Target role (Rol de destino)**, elija si desea que el punto de enlace sea de lectura o escritura o de solo lectura. 

    Las conexiones que utilizan puntos de conexión de lectura/escritura pueden realizar cualquier tipo de operación, como instrucciones de lenguaje de definición de datos (DDL), instrucciones de lenguaje de manipulación de datos (DML) y consultas. Estos puntos de conexión siempre se conectan a la instancia principal del clúster de bases de datos de RDS. Puede utilizar puntos de enlace de lectura o escritura para operaciones generales de bases de datos cuando solo utiliza un punto de enlace único en la aplicación. También puede utilizar puntos de enlace de lectura o escritura para operaciones administrativas, aplicaciones de procesamiento de transacciones en línea (OLTP) y trabajos de extracción, transformación y carga (ETL). 

    Las conexiones que utilizan un punto de enlace de solo lectura solo pueden realizar consultas. RDS Proxy puede utilizar una de las instancias de lector para cada conexión al punto de conexión. De esta manera, una aplicación que requiere un uso intensivo de consultas puede aprovechar la capacidad de agrupamiento en clúster del clúster de bases de datos Multi-AZ. Estas conexiones de solo lectura no imponen sobrecargas en la instancia principal del clúster. De esta manera, sus consultas de informes y análisis no ralentizan las operaciones de escritura de sus aplicaciones de OLTP. 

1.  En **Nube privada virtual (VPC)**, elija el valor predeterminado para acceder al punto de conexión desde las mismas instancias de EC2 u otros recursos que normalmente utiliza para acceder al proxy o a su base de datos asociada. Para configurar el acceso entre VPC para este proxy, elija una VPC distinta de la predeterminada. Para obtener más información sobre el acceso a través de VPC, consulte [Acceso a las bases de datos de RDS en todas las VPC](rds-proxy-endpoints.md#rds-proxy-cross-vpc). 

1.  Para **Tipo de red de punto de conexión**, elija la versión de IP del punto de conexión de proxy. Las opciones disponibles son:
   + **IPv4**: el punto de conexión del proxy utiliza solo direcciones IPv4 (predeterminado).
   + **IPv6**: el punto de conexión del proxy utiliza solo direcciones IPv6.
   + **Doble pila**: el punto de conexión del proxy admite direcciones IPv4 y IPv6.

   Para usar IPv6 o de doble pila, la VPC y las subredes deben estar configuradas para admitir el tipo de red seleccionado.

1.  En **Subnets (Subredes)**, RDS Proxy rellena las mismas subredes que el proxy asociado de forma predeterminada. Para restringir el acceso al punto de conexión para que solo una parte del intervalo de direcciones de la VPC pueda conectarse a él, quite una o varias subredes. 

1.  En **VPC security group** (Grupos de seguridad de la VPC), puede elegir un grupo de seguridad existente o crear uno nuevo. De forma predeterminada, el proxy de RDS rellena el mismo grupo o grupos de seguridad que el proxy asociado. Si las reglas entrantes y salientes del proxy son apropiadas para este punto de conexión, puede dejar la opción predeterminada. 

    Si decide crear un grupo de seguridad nuevo, especifique un nombre para el grupo de seguridad en esta página. A continuación, edite la configuración del grupo de seguridad desde la consola de EC2. 

1.  Elija **Create proxy endpoint (Crear punto de enlace de proxy)**. 

## AWS CLI
<a name="rds-proxy-endpoints.CreatingEndpoint.CLI"></a>

 Para crear un punto de enlace de proxy, utilice el comando de AWS CLI [create-db-proxy-endpoint](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-proxy-endpoint.html). 

 Incluya los siguientes parámetros obligatorios: 
+  `--db-proxy-name value` 
+  `--db-proxy-endpoint-name value` 
+  `--vpc-subnet-ids list_of_ids`. Separe los ID de subred con espacios. No se especifica el ID de la VPC en sí. 

 También puede incluir los siguientes parámetros opcionales: 
+  `--target-role { READ_WRITE | READ_ONLY }`. El valor predeterminado de este parámetro es `READ_WRITE`. Cuando el proxy está asociado a un clúster de base de datos multi-AZ que solo contiene una instancia de base de datos de escritura, no puede especificar `READ_ONLY`. Para obtener más información sobre el uso previsto de puntos de conexión de solo lectura con clústeres de base de datos multi-AZ, consulte [Puntos de conexión de lector para clústeres de base de datos Multi-AZ](rds-proxy-endpoints.md#rds-proxy-endpoints-reader-stub). 
+  `--vpc-security-group-ids value`. Separe los ID de grupo de seguridad con espacios. Si omite este parámetro, el proxy de RDS utiliza el grupo de seguridad predeterminado de la VPC. El proxy de RDS determina la VPC en función de los ID de subred que especifique para el parámetro `--vpc-subnet-ids`. 
+  `--endpoint-network-type { IPV4 | IPV6 | DUAL }`. Este parámetro especifica la versión de IP del punto de conexión del proxy. El valor predeterminado es `IPV4`. Para usar `IPV6` o `DUAL`, la VPC y las subredes deben estar configuradas para admitir el tipo de red seleccionado. 

**Example**  
 En el ejemplo siguiente se crea un punto de enlace de proxy denominado `my-endpoint`.   
Para Linux, macOS o Unix:  

```
aws rds create-db-proxy-endpoint \
  --db-proxy-name my-proxy \
  --db-proxy-endpoint-name my-endpoint \
  --vpc-subnet-ids subnet_id subnet_id subnet_id ... \
  --target-role READ_ONLY \
  --vpc-security-group-ids security_group_id \
  --endpoint-network-type DUAL
```
Para Windows:  

```
aws rds create-db-proxy-endpoint ^
  --db-proxy-name my-proxy ^
  --db-proxy-endpoint-name my-endpoint ^
  --vpc-subnet-ids subnet_id_1 subnet_id_2 subnet_id_3 ... ^
  --target-role READ_ONLY ^
  --vpc-security-group-ids security_group_id ^
  --endpoint-network-type DUAL
```

## API de RDS
<a name="rds-proxy-endpoints.CreatingEndpoint.API"></a>

 Para crear un punto de conexión proxy, utilice la acción [CreateDBProxyEndpoint](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBProxyEndpoint.html) de la API de RDS. 

# Visualización de puntos de enlace de proxy
<a name="rds-proxy-endpoints.DescribingEndpoint"></a>

Para ver los puntos de conexión proxy existentes, siga estas instrucciones:

## Consola
<a name="rds-proxy-endpoints.DescribingEndpoint.CON"></a>

**Para ver los detalles de un punto de enlace de proxy**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  En el panel de navegación, seleccione **Proxies**. 

1.  En la lista, elija el proxy cuyo punto de enlace desea ver. Haga clic en el nombre del proxy para ver su página de detalles. 

1.  En la sección **Proxy endpoints (Puntos de enlace de proxy)**, elija el punto de enlace que desea ver. Haga clic en su nombre para ver la página de detalles. 

1.  Examine los parámetros cuyos valores le interesan. Puede comprobar propiedades como las siguientes: 
   +  Si el punto de enlace es de lectura o escritura o de solo lectura.
   +  La dirección de punto de enlace que se utiliza en una cadena de conexión de base de datos.
   +  La VPC, las subredes y los grupos de seguridad asociados con el punto de enlace.

## AWS CLI
<a name="rds-proxy-endpoints.DescribingEndpoint.CLI"></a>

 Para ver uno o más puntos de conexión de proxy, utilice el comando de AWS CLI [describe-db-proxy-endpoints](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-endpoints.html).

 Puede incluir los siguientes parámetros opcionales: 
+  `--db-proxy-endpoint-name` 
+  `--db-proxy-name` 

 En el siguiente ejemplo se describe el punto de enlace de proxy de `my-endpoint`. 

**Example**  
Para Linux, macOS o:Unix  

```
aws rds describe-db-proxy-endpoints \
  --db-proxy-endpoint-name my-endpoint
```
En:Windows  

```
aws rds describe-db-proxy-endpoints ^
  --db-proxy-endpoint-name my-endpoint
```

## API de RDS
<a name="rds-proxy-endpoints.DescribingEndpoint.API"></a>

 Para describir uno o más puntos de enlace de proxy, utilice la operación de API de RDS [DescribeDBProxyEndpoints](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBProxyEndpoints.html). 

# Modificación de un punto de enlace de proxy
<a name="rds-proxy-endpoints.ModifyingEndpoint"></a>

Para modificar los puntos de conexión proxy, siga estas instrucciones:

## Consola
<a name="rds-proxy-endpoints.ModifyingEndpoint.CON"></a>

**Para modificar uno o varios puntos de enlace de proxy**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  En el panel de navegación, seleccione **Proxies**. 

1. En la lista, elija el proxy cuyo punto de enlace desea modificar. Haga clic en el nombre del proxy para ver su página de detalles.

1.  En la sección **Proxy endpoints (Puntos de enlace de proxy)**, elija el punto de enlace que desea modificar. Puede seleccionarlo en la lista o hacer clic en su nombre para ver la página de detalles. 

1.  En la página de detalles del proxy, en la sección de **Proxy endpoints (Puntos de enlace de proxy)**, elija **Edit (Editar)**. O en la página de detalles del punto de conexión de proxy, en **Acciones**, elija **Editar**.

1.  Cambie los valores de los parámetros que desee modificar.

1.  Elija **Guardar cambios**. 

## AWS CLI
<a name="rds-proxy-endpoints.ModifyingEndpoint.CLI"></a>

 Para modificar un punto de conexión de proxy, utilice el comando de AWS CLI [modify-db-proxy-endpoint](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-endpoint.html) con los siguientes parámetros requeridos: 
+  `--db-proxy-endpoint-name` 

 Especifique los cambios en las propiedades del punto de enlace mediante uno o varios de los siguientes parámetros: 
+  `--new-db-proxy-endpoint-name` 
+  `--vpc-security-group-ids`. Separe los ID de grupo de seguridad con espacios. 

 En el ejemplo siguiente se cambia el nombre del punto de enlace de proxy de `my-endpoint` a `new-endpoint-name`. 

**Example**  
Para Linux, macOS o Unix:  

```
aws rds modify-db-proxy-endpoint \
  --db-proxy-endpoint-name my-endpoint \
  --new-db-proxy-endpoint-name new-endpoint-name
```
Para Windows:  

```
aws rds modify-db-proxy-endpoint ^
  --db-proxy-endpoint-name my-endpoint ^
  --new-db-proxy-endpoint-name new-endpoint-name
```

## API de RDS
<a name="rds-proxy-endpoints.ModifyingEndpoint.API"></a>

 Para modificar un punto de enlace de proxy, utilice la operación de API de RDS [ModifyDBProxyEndpoint](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyEndpoint.html). 

# Eliminación de un punto de enlace de proxy
<a name="rds-proxy-endpoints.DeletingEndpoint"></a>

 Para eliminar un punto de conexión para su proxy, siga estas instrucciones: 

**nota**  
 No puede eliminar el punto de conexión de proxy predeterminado que RDS Proxy crea automáticamente para cada proxy.   
 Cuando elimina un proxy, RDS Proxy elimina automáticamente todos los puntos de enlace asociados. 

## Consola
<a name="rds-proxy-endpoints.DeleteEndpoint.console"></a>

**Para eliminar un punto de enlace de proxy mediante Consola de administración de AWS**

1.  En el panel de navegación, seleccione **Proxies**. 

1.  En la lista, elija el proxy cuyo punto de enlace desea establecer como punto de enlace. Haga clic en el nombre del proxy para ver su página de detalles. 

1.  En la sección **Proxy endpoints (Puntos de enlace de proxy)**, elija el punto de enlace que desea eliminar. Puede seleccionar uno o varios puntos de enlace de la lista o hacer clic en el nombre de un punto de enlace único para ver la página de detalles. 

1.  En la página de detalles del proxy, en la sección de **Proxy endpoints (Puntos de enlace de proxy)**, elija **Delete (Eliminar)**. O en la página de detalles del punto de conexión de proxy, en **Acciones**, elija **Eliminar**. 

## AWS CLI
<a name="rds-proxy-endpoints.DeleteEndpoint.cli"></a>

 Para eliminar un punto de enlace de proxy, ejecute el comando [delete-db-proxy-endpoint](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-proxy-endpoint.html) con los siguientes parámetros requeridos: 
+  `--db-proxy-endpoint-name` 

 El siguiente comando elimina el punto de enlace de proxy denominado `my-endpoint`. 

Para Linux, macOS o:Unix

```
aws rds delete-db-proxy-endpoint \
  --db-proxy-endpoint-name my-endpoint
```

En:Windows

```
aws rds delete-db-proxy-endpoint ^
  --db-proxy-endpoint-name my-endpoint
```

## API de RDS
<a name="rds-proxy-endpoints.DeleteEndpoint.api"></a>

 Para eliminar un punto de enlace de proxy con la API de RDS, ejecute la operación [DeleteDBProxyEndpoint](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBProxyEndpoint.html). Especifique el nombre del punto de enlace de proxy para el parámetro `DBProxyEndpointName`. 

# Supervisión de las métricas de RDS Proxy con Amazon CloudWatch
<a name="rds-proxy.monitoring"></a>

 Puede monitorear el proxy de RDS mediante Amazon CloudWatch. CloudWatch recopila y procesa los datos sin procesar de los proxies en métricas legibles y casi en tiempo real. Para buscar estas métricas en la consola de CloudWatch, seleccione **Metrics (Métricas)**, a continuación, **RDS** y, a continuación, **Per-Proxy Metrics (Métricas por proxy)**. Para obtener más información, consulte [Uso de métricas de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) en la Guía del usuario de Amazon CloudWatch. 

**nota**  
 RDS publica estas métricas para cada instancia Amazon EC2 subyacente asociada con un proxy. Es posible que más de una instancia EC2 sirva un proxy único. Utilice estadísticas de CloudWatch para agregar los valores de un proxy en todas las instancias asociadas.   
 Es posible que algunas de estas métricas no estén visibles hasta después de la primera conexión correcta a través de un proxy. 

 En los registros de RDS Proxy, cada entrada tiene el prefijo del nombre del punto de enlace de proxy asociado. Este nombre puede ser el especificado para un punto de conexión definido por el usuario, o el nombre especial `default` para el punto de conexión predeterminado de un proxy que realiza las solicitudes de lectura/escritura. 

 Todas las métricas de RDS Proxy están en el grupo `proxy`. 

 Cada punto de enlace de proxy tiene sus propias métricas de CloudWatch. Puede monitorear el uso de cada punto de enlace de proxy de forma independiente. Para obtener más información acerca de los puntos de enlace de proxy, consulte [Trabajo con puntos de enlace del proxy de Amazon RDS](rds-proxy-endpoints.md). 

 Puede agregar los valores de cada métrica mediante uno de los siguientes conjuntos de dimensiones. Por ejemplo, mediante el uso del conjunto de dimensiones de `ProxyName`, puede analizar todo el tráfico de un proxy determinado. Mediante el uso de los otros conjuntos de dimensiones, puede dividir las métricas de diferentes maneras. Puede dividir las métricas en función de los diferentes puntos de enlace o bases de datos de destino de cada proxy, o el tráfico de lectura o escritura y de solo lectura a cada base de datos. 
+  Conjunto de dimensiones 1 : `ProxyName` 
+  Conjunto de dimensiones 2 : `ProxyName`, `EndpointName` 
+  Conjunto de dimensiones 3 : `ProxyName`, `TargetGroup`, `Target` 
+  Conjunto de dimensiones 4 : `ProxyName`, `TargetGroup`, `TargetRole` 


|  Métrica  |  Descripción  |  Período de validez  |  Conjunto de dimensiones de CloudWatch  | 
| --- | --- | --- | --- | 
|  `AvailabilityPercentage`   |   El porcentaje de tiempo para el que el grupo de destino estaba disponible en el rol indicado por la dimensión. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es `Sum`.   |  1 minuto  |  [Dimension set 4](#proxy-dimension-set-4)  | 
| ClientConnections  |   El número actual de conexiones de cliente. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsClosed  |   El número de conexiones de cliente cerradas. La estadística más útil para esta métrica es `Sum`.   |   1 minuto o más   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsInSetup |  El número actual de conexiones de cliente abiertas, pero que no han completado la configuración. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es Suma.  |  1 minuto  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
|  `ClientConnectionsNoTLS`   |  Número actual de conexiones de cliente sin Transport Layer Security (TLS). Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es Sum.  |  1 minuto |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
|  `ClientConnectionsReceived`   |   El número de solicitudes de conexión de cliente recibidas. La estadística más útil para esta métrica es `Sum`.   |   1 minuto o más   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsSetupFailedAuth  |   El número de intentos de conexión de cliente que produjeron un error debido a una autenticación o TLS mal configurada. La estadística más útil para esta métrica es `Sum`.   |   1 minuto o más   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsSetupSucceeded  |   El número de conexiones de cliente establecidas correctamente con cualquier mecanismo de autenticación con o sin TLS. La estadística más útil para esta métrica es `Sum`.   |   1 minuto o más   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsTLS  |  El número actual de conexiones de cliente con TLS. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es Sum.  | 1 minuto |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| DatabaseConnectionRequests  |   El número de solicitudes para crear una conexión de base de datos. La estadística más útil para esta métrica es `Sum`.   |   1 minuto o más   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
|  `DatabaseConnectionRequestsWithTLS`   |  El número de solicitudes para crear una conexión de base de datos con TLS. La estadística más útil para esta métrica es Sum.  |  1 minuto o más  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnections  |   El número actual de conexiones de base de datos. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
|  `DatabaseConnectionsBorrowLatency`   |  El tiempo en microsegundos que tarda el proxy que se monitorea en obtener una conexión de base de datos. La estadística más útil para esta métrica es Sum.  |  1 minuto o más  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| DatabaseConnectionsCurrentlyBorrowed  |   El número actual de conexiones de base de datos en estado de préstamo. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnectionsCurrentlyInTransaction  |   El número actual de conexiones de base de datos en una transacción. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnectionsCurrentlySessionPinned  |   El número actual de conexiones de base de datos fijadas actualmente debido a operaciones en solicitudes de cliente que cambian el estado de la sesión. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnectionsSetupFailed  |   El número de solicitudes de conexión de base de datos que produjeron un error. La estadística más útil para esta métrica es `Sum`.   |   1 minuto o más   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnectionsSetupSucceeded  |   El número de conexiones de base de datos establecidas correctamente con o sin TLS. La estadística más útil para esta métrica es `Sum`.   |   1 minuto o más   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
|  `DatabaseConnectionsWithTLS`   |  El número actual de conexiones de base de datos con TLS. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es Sum.  |  1 minuto  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| MaxDatabaseConnectionsAllowed  |   El número máximo de conexiones de base de datos permitidas. Se informa de esta métrica cada minuto. La estadística más útil para esta métrica es `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
|  `QueryDatabaseResponseLatency`   |  El tiempo en microsegundos que la base de datos tardó en responder a la consulta. La estadística más útil para esta métrica es Average.  |  1 minuto o más  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| QueryRequests  |   El número de consultas recibidas. Una consulta que incluye varias instrucciones se cuenta como una consulta. La estadística más útil para esta métrica es `Sum`.   |   1 minuto o más   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| QueryRequestsNoTLS  |  El número de consultas recibidas de conexiones que no son TLS. Una consulta que incluye varias instrucciones se cuenta como una consulta. La estadística más útil para esta métrica es Sum.  |  1 minuto o más  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
|  `QueryRequestsTLS`   |  El número de consultas recibidas de conexiones TLS. Una consulta que incluye varias instrucciones se cuenta como una consulta. La estadística más útil para esta métrica es Sum.  |  1 minuto o más  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| QueryResponseLatency  |  El tiempo en microsegundos entre obtener una solicitud de consulta y que el proxy la responda. La estadística más útil para esta métrica es Average.  |  1 minuto o más  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 

 Puede encontrar registros de actividad del proxy de RDS en CloudWatch en la Consola de administración de AWS. Cada proxy tiene una entrada en la página **Log groups (Grupos de registro)**. 

**importante**  
 Estos registros están destinados al consumo humano para solucionar problemas y no para el acceso mediante programación. El formato y el contenido de los registros están sujetos a cambios.   
 En particular, los registros más antiguos no contienen prefijos que indiquen el punto de enlace de cada solicitud. En los registros más recientes, cada entrada tiene el prefijo del nombre del punto de enlace de proxy asociado. Este nombre puede ser el que especificó para un punto de enlace definido por el usuario, o el nombre especial `default` para las solicitudes que utilizan el punto de enlace predeterminado de un proxy. 

# Trabajo con eventos de RDS Proxy
<a name="rds-proxy.events"></a>

Un *evento* indica un cambio en un entorno, como un entorno de AWS, un servicio o aplicación de un socio de software como servicio (SaaS). O bien, puede ser una de sus propias aplicaciones o servicios personalizados. Por ejemplo, Amazon RDS genera un evento al crear o modificar una instancia de RDS Proxy. Amazon RDS envía eventos a Amazon EventBridge casi en tiempo real. A continuación, encontrará una lista de eventos de RDS Proxy a los que puede suscribirse y un ejemplo de evento de RDS Proxy. 

Para obtener más información acerca de cómo trabajar con eventos, consulte lo siguiente:
+ Para obtener instrucciones acerca de cómo ver los eventos mediante la Consola de administración de AWS, la AWS CLI o la API de RDS, consulte [Consulta de eventos de Amazon RDS](USER_ListEvents.md).
+ Para obtener información sobre cómo configurar Amazon RDS para enviar eventos a EventBridge, consulte [Creación de una regla que se desencadena en función de un evento Amazon RDS](rds-cloud-watch-events.md).

## Eventos de RDS Proxy
<a name="rds-proxy.events.list"></a>

En la siguiente tabla se muestran las categorías de eventos y una lista de los eventos que pueden producirse cuando el tipo de origen es una instancia de RDS Proxy.


|  Categoría  | ID de evento de RDS |  Mensaje  |  Notas  | 
| --- | --- | --- | --- | 
| configuration change | RDS-EVENT-0204 |  RDS ha modificado el proxy de la base de datos *nombre*.  | Ninguna | 
| configuration change | RDS-EVENT-0207 |  RDS ha modificado el punto de conexión del proxy de la base de datos *nombre*.  | Ninguna | 
| configuration change | RDS-EVENT-0213 |  RDS ha detectado la adición de la instancia de base de datos y la ha agregado automáticamente al grupo de destino del proxy de la base de datos *nombre*.  | Ninguna | 
|  configuration change  | RDS-EVENT-0214 |  RDS ha detectado la eliminación de la instancia de base de datos *nombre* y la ha borrado automáticamente del grupo de destino *nombre* del proxy de la base de datos *nombre*.  | Ninguna | 
|  configuration change  | RDS-EVENT-0215 |  RDS ha detectado la eliminación del clúster de base de datos *nombre* y la ha borrado automáticamente del grupo de destino *nombre* del proxy de la base de datos *nombre*.  | Ninguna | 
|  creación  | RDS-EVENT-0203 |  RDS ha creado el proxy de la base de datos *nombre*.  | Ninguna | 
|  creación  | RDS-EVENT-0206 |  RDS ha creado el punto de conexión *nombre* del para el proxy de la base de datos *nombre*.  | Ninguna | 
| deletion | RDS-EVENT-0205 |  RDS ha eliminado el proxy de la base de datos *nombre*.  | Ninguna | 
|  deletion  | RDS-EVENT-0208 |  RDS ha eliminado el punto de conexión *nombre* del proxy de la base de datos *nombre*.  | Ninguna | 
|  failure  | RDS-EVENT-0243 |  RDS no ha podido aprovisionar capacidad para el proxy *nombre* porque no hay suficientes direcciones IP disponibles en las subredes: *nombre*. Para resolver el problema, asegúrese de que sus subredes tengan el número mínimo de direcciones IP sin usar, tal como se recomienda en la documentación de RDS Proxy.  |  Para determinar el número recomendado para la clase de instancia, consulte [Planificación de la capacidad de direcciones IP](rds-proxy-network-prereqs.md#rds-proxy-network-prereqs.plan-ip-address).  | 
|  failure | RDS-EVENT-0275 |  RDS ha limitado algunas conexiones al proxy de base de datos *nombre*. El número de solicitudes de conexión simultáneas del cliente al proxy ha superado el límite.  | Ninguna | 

A continuación, se muestra un ejemplo de un evento de RDS Proxy en formato JSON. El evento muestra que RDS modificó el punto de conexión denominado `my-endpoint` de la instancia de RDS Proxy denominada `my-rds-proxy`. El ID de evento es RDS-EVENT-0207.

```
{
  "version": "0",
  "id": "68f6e973-1a0c-d37b-f2f2-94a7f62ffd4e",
  "detail-type": "RDS DB Proxy Event",
  "source": "aws.rds",
  "account": "123456789012",
  "time": "2018-09-27T22:36:43Z",
  "region": "us-east-1",
  "resources": [
     "arn:aws:rds:us-east-1:123456789012:db-proxy:my-rds-proxy"
  ],
  "detail": {
    "EventCategories": [
      "configuration change"
    ],
    "SourceType": "DB_PROXY",
    "SourceArn": "arn:aws:rds:us-east-1:123456789012:db-proxy:my-rds-proxy",
    "Date": "2018-09-27T22:36:43.292Z",
    "Message": "RDS modified endpoint my-endpoint of DB Proxy my-rds-proxy.",
    "SourceIdentifier": "my-endpoint",
    "EventID": "RDS-EVENT-0207"
  }
}
```

# Solución de problemas de RDS Proxy
<a name="rds-proxy.troubleshooting"></a>

 A continuación, puede encontrar ideas de solución de problemas para algunos problemas de RDS Proxy comunes e información sobre registros de CloudWatch para RDS Proxy. 

 En los registros de RDS Proxy, cada entrada tiene el prefijo del nombre del punto de enlace de proxy asociado. Este nombre puede ser el especificado para un punto de conexión definido por el usuario. O puede ser el nombre especial `default` para el punto de conexión predeterminado de un proxy que lleva a cabo solicitudes de lectura/escritura. Para obtener más información acerca de los puntos de enlace de proxy, consulte [Trabajo con puntos de enlace del proxy de Amazon RDS](rds-proxy-endpoints.md). 

**Topics**
+ [

## Verificación de la conectividad para un proxy
](#rds-proxy-verifying)
+ [

## Problemas y soluciones comunes
](#rds-proxy-diagnosis)
+ [

## Solución de problemas de RDS Proxy con RDS para MySQL
](#rds-proxy-MySQL-troubleshooting)
+ [

## Solución de problemas de RDS Proxy con RDS para PostgreSQL
](#rds-proxy-PostgreSQL-troubleshooting)

## Verificación de la conectividad para un proxy
<a name="rds-proxy-verifying"></a>

 Puede utilizar los siguientes comandos para comprobar que todos los componentes, como el proxy, la base de datos y las instancias de computación de la conexión, se pueden comunicar entre sí. 

 Examine el propio proxy usando el comando [describe-db-proxies](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). Examine también el grupo de destino asociado mediante el comando [describe-db-proxy-target-groups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-target-groups.html). Compruebe que los detalles de los destinos coincidan con la instancia de base de datos de RDS que desea asociar con el proxy. Utilice comandos como los siguientes. 

```
aws rds describe-db-proxies --db-proxy-name $DB_PROXY_NAME
aws rds describe-db-proxy-target-groups --db-proxy-name $DB_PROXY_NAME
```

 Para confirmar que el proxy puede conectarse a la base de datos subyacente, examine los destinos especificados en los grupos de destino mediante el comando [describe-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-targets.html). Utilice un comando como el siguiente. 

```
aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME
```

 El resultado del comando [describe-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-targets.html) incluye un campo `TargetHealth`. Puede examinar los campos `State`, `Reason` y `Description` dentro de `TargetHealth` para comprobar si el proxy puede comunicarse con la instancia de base de datos subyacente. 
+  Un valor `State` de `AVAILABLE` indica que el proxy puede conectarse a la instancia de base de datos. 
+  Un valor `State` de `UNAVAILABLE` indica un problema de conexión temporal o permanente. En este caso, examine los campos `Reason` y `Description`. Por ejemplo, si `Reason` tiene un valor de `PENDING_PROXY_CAPACITY`, intente conectarse de nuevo después de que el proxy finalice su operación de escalado. Si `Reason` tiene un valor de `UNREACHABLE`, `CONNECTION_FAILED` o `AUTH_FAILURE`, utilice la explicación del campo `Description` que le ayudará a diagnosticar el problema. 
+  El campo `State` es posible que tenga un valor de `REGISTERING` durante un breve tiempo antes de cambiar a `AVAILABLE` o `UNAVAILABLE`. 

 Si el siguiente comando Necat (`nc`) se ejecuta correctamente, puede acceder al punto de enlace del proxy desde la instancia de EC2 u otro sistema en el que haya iniciado sesión. Este comando notifica un error si no está en la misma VPC que el proxy y la base de datos asociada. Es posible que pueda iniciar sesión directamente en la base de datos sin estar en la misma VPC. Sin embargo, no puede iniciar sesión en el proxy a menos que esté en la misma VPC. 

```
nc -zx MySQL_proxy_endpoint 3306

nc -zx PostgreSQL_proxy_endpoint 5432
```

 Puede utilizar los siguientes comandos para asegurarse de que la instancia de EC2 tenga las propiedades requeridas. Algo especialmente importante es que la VPC para la instancia de EC2 debe ser la misma que la VPC para donde se conecta el proxy. 

```
aws ec2 describe-instances --instance-ids your_ec2_instance_id
```

 Examine los secretos de Secrets Manager utilizados para el proxy. 

```
aws secretsmanager list-secrets
aws secretsmanager get-secret-value --secret-id your_secret_id
```

 Asegúrese de que el campo `SecretString` que muestra `get-secret-value` está codificado como una cadena JSON que incluye los campos `username` y `password`. En el ejemplo siguiente se muestra el formato del campo `SecretString`. 

```
{
  "ARN": "some_arn",
  "Name": "some_name",
  "VersionId": "some_version_id",
  "SecretString": '{"username":"some_username","password":"some_password"}',
  "VersionStages": [ "some_stage" ],
  "CreatedDate": some_timestamp
}
```

Al resolver problemas de autenticación de IAM, verifique lo siguiente:
+ La base de datos tiene habilitada la autenticación de IAM.
+ El proxy está configurado con el esquema de autenticación correcto.
+ Las políticas de IAM del rol de IAM proporcionadas al proxy conceden el permiso `rds-db:connect` necesario a la base de datos correspondiente y su nombre de usuario.
+ Para la autenticación de IAM integral, existen usuarios de bases de datos que coinciden con los nombres de usuario o rol de IAM.
+ SSL/TLS está habilitado para la conexión.

## Problemas y soluciones comunes
<a name="rds-proxy-diagnosis"></a>

En esta sección, se describen algunos problemas comunes y posibles soluciones al utilizar RDS Proxy.

Después de ejecutar el comando de la CLI `aws rds describe-db-proxy-targets`, si en la descripción `TargetHealth` se indica `Proxy does not have any registered credentials`, verifique lo siguiente:
+ Hay credenciales registradas para que el usuario acceda al proxy.
+ El rol de IAM para acceder al secreto de Secrets Manager utilizado por el proxy es válido.

Es posible que encuentre los siguientes eventos de RDS al crear o conectarse a un proxy de base de datos.


| Categoría | ID de evento de RDS | Descripción | 
| --- | --- | --- | 
|  error  | RDS-EVENT-0243 | RDS no ha podido aprovisionar capacidad para el proxy porque no hay suficientes direcciones IP disponibles en las subredes. Para resolver el problema, asegúrese de que sus subredes tengan el número mínimo de direcciones IP sin usar. Para determinar el número recomendado para la clase de instancia, consulte [Planificación de la capacidad de direcciones IP](rds-proxy-network-prereqs.md#rds-proxy-network-prereqs.plan-ip-address). | 
|  error  | RDS-EVENT-0275 |  RDS ha limitado algunas conexiones al proxy de base de datos *nombre*. El número de solicitudes de conexión simultáneas del cliente al proxy ha superado el límite.  | 

 Es posible que encuentre los siguientes problemas al crear un nuevo proxy o al conectarse a un proxy. 


|  Error  |  Causas o soluciones provisionales  | 
| --- | --- | 
|   `403: The security token included in the request is invalid`   |  Seleccione un rol de IAM existente en lugar de elegir crear uno nuevo.  | 

## Solución de problemas de RDS Proxy con RDS para MySQL
<a name="rds-proxy-MySQL-troubleshooting"></a>

 Es posible que encuentre los siguientes problemas al conectarse a un proxy MySQL. 


|  Error  |  Causas o soluciones provisionales  | 
| --- | --- | 
|  ERROR 1040 (HY000): Connections rate limit exceeded (limit\$1value)  |  La tasa de solicitudes de conexión del cliente al proxy ha superado el límite.  | 
|  ERROR 1040 (HY000): IAM authentication rate limit exceeded  |  El número de solicitudes simultáneas con autenticación de IAM desde el cliente al proxy ha superado el límite.  | 
|  ERROR 1040 (HY000): Number simultaneous connections exceeded (limit\$1value)  |  El número de solicitudes de conexión simultáneas del cliente al proxy ha superado el límite.  | 
|   `ERROR 1045 (28000): Access denied for user 'DB_USER'@'%' (using password: YES)`   |  El secreto de Secrets Manager utilizado por el proxy no coincide con el nombre de usuario y la contraseña de un usuario de base de datos existente. Actualice las credenciales en el secreto de Secrets Manager o asegúrese de que el usuario de la base de datos existe y tiene la misma contraseña que en el secreto.  | 
|  ERROR 1105 (HY000): Unknown error  |  Se ha producido un error desconocido.  | 
|  ERROR 1231 (42000): Variable ''character\$1set\$1client'' can't be set to the value of value  |   El valor establecido para el parámetro `character_set_client` no es válido. Por ejemplo, el valor `ucs2` no es válido porque puede bloquear el servidor MySQL.   | 
|  ERROR 3159 (HY000): This RDS Proxy requires TLS connections.  |   Ha habilitado la configuración **Exigir Transport Layer Security** en el proxy pero su conexión incluyó el parámetro `ssl-mode=DISABLED` en el cliente de MySQL. Haga una de estas dos operaciones:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  ERROR 2026 (HY000): SSL connection error: Internal Server Error  |   Error en el protocolo de enlace TLS al proxy. Algunas posibles razones incluyen las siguientes:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  ERROR 9501 (HY000): Timed-out waiting to acquire database connection  |   Se agotó el tiempo de espera del proxy mientras esperaba a adquirir una conexión a la base de datos. Algunas posibles razones incluyen las siguientes:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 

## Solución de problemas de RDS Proxy con RDS para PostgreSQL
<a name="rds-proxy-PostgreSQL-troubleshooting"></a>

 Es posible que encuentre los siguientes problemas al conectarse a un proxy PostgreSQL. 


|  Error  |  Causa  |  Solución  | 
| --- | --- | --- | 
|   `ERROR 28000: IAM authentication is allowed only with SSL connections.`   |   El usuario ha intentado conectarse a la base de datos mediante la autenticación de IAM con la configuración `sslmode=disable` en el cliente PostgreSQL.   |   El usuario necesita conectarse a la base de datos utilizando la configuración mínima de `sslmode=require` en el cliente PostgreSQL. Para obtener más información, consulte la documentación de [Soporte de SSL de PostgreSQL](https://www.postgresql.org/docs/current/libpq-ssl.html).   | 
|  `ERROR 28000: This RDS proxy has no credentials for the role role_name. Check the credentials for this role and try again.`   |   No hay ningún secreto de Secrets Manager para este rol.   |   Agregue un secreto de Secrets Manager para este rol. Para obtener más información, consulte [Configuración de la autenticación de IAM para RDS Proxy](rds-proxy-iam-setup.md).  | 
|  `ERROR 28000: RDS supports only IAM, MD5, or SCRAM authentication.`   |   El cliente de base de datos que se utiliza para conectarse al proxy utiliza un mecanismo de autenticación que actualmente no admite el proxy.   |   Si no utiliza la autenticación IAM, utilice la autenticación de contraseñas MD5 o SCRAM.   | 
|  `ERROR 28000: A user name is missing from the connection startup packet. Provide a user name for this connection.`   |   El cliente de base de datos que se utiliza para conectarse al proxy no envía un nombre de usuario al intentar establecer una conexión.   |   Asegúrese de definir un nombre de usuario al configurar una conexión con el proxy utilizando el cliente PostgreSQL de su elección.   | 
|  `ERROR 28000: IAM is allowed only with SSL connections.`   |   Un cliente intentó conectarse mediante la autenticación de IAM, pero SSL no estaba habilitado.   |   Habilite SSL en el cliente PostgreSQL.   | 
|  `ERROR 28000: This RDS Proxy requires TLS connections.`   |   El usuario habilitó la opción **Exigir Transport Layer Security** pero intentó conectarse con `sslmode=disable` en el cliente de PostgreSQL.   |   Para corregir este error, realice alguna de las siguientes acciones:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  `ERROR 28P01: IAM authentication failed for user user_name. Check the IAM token for this user and try again.`   |   Este error es posible que se deba a las siguientes razones:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  |   Para corregir este error, haga lo siguiente:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  `ERROR 28P01: The password that was provided for the role role_name is wrong.`   |   La contraseña de este rol no coincide con el secreto de Secrets Manager.   |   Compruebe el secreto de este rol en Secrets Manager para ver si la contraseña es la misma que la que se está utilizando en su cliente PostgreSQL.   | 
|  `ERROR 28P01: The IAM authentication failed for the role role_name. Check the IAM token for this role and try again.`   |   Hay un problema con el token de IAM utilizado para la autenticación de IAM.   |   Genere un nuevo token de autenticación y úselo en una nueva conexión.   | 
|  `ERROR 0A000: Feature not supported: RDS Proxy supports only version 3.0 of the PostgreSQL messaging protocol.`   |   El cliente PostgreSQL utilizado para conectarse al proxy utiliza un protocolo anterior a 3.0.   |   Utilice un cliente PostgreSQL más reciente que sea compatible con el protocolo de mensajería 3.0. Si está utilizando la CLI `psql` de PostgreSQL, utilice una versión mayor o igual a 7.4.   | 
|  `ERROR 0A000: Feature not supported: RDS Proxy currently doesn't support streaming replication mode.`   |   El cliente PostgreSQL utilizado para conectarse al proxy está intentando utilizar el modo de replicación de streaming, que actualmente no es compatible con el proxy RDS.   |   Desactive el modo de replicación de streaming en el cliente de PostgreSQL que se utiliza para conectarse.   | 
|  `ERROR 0A000: Feature not supported: RDS Proxy currently doesn't support the option option_name.`   |   A través del mensaje de inicio, el cliente PostgreSQL utilizado para conectarse al proxy solicita una opción que actualmente no es compatible con el proxy RDS.   |   Desactive la opción que se muestra como no compatible con el mensaje anterior en el cliente de PostgreSQL que se utiliza para conectarse.   | 
|  `ERROR 53300: The IAM authentication failed because of too many competing requests.`   |   El número de solicitudes simultáneas con autenticación de IAM desde el cliente al proxy ha superado el límite.   |   Reduzca la velocidad en la que se establecen las conexiones que utilizan la autenticación de IAM desde un cliente PostgreSQL.   | 
|  `ERROR 53300: The maximum number of client connections to the proxy exceeded number_value.`   |   El número de solicitudes de conexión simultáneas del cliente al proxy ha superado el límite.   |   Reduzca el número de conexiones activas de clientes PostgreSQL a este proxy RDS.   | 
|  `ERROR 53300: Rate of connection to proxy exceeded number_value.`   |   La tasa de solicitudes de conexión del cliente al proxy ha superado el límite.   |   Reduzca la velocidad en la que se establecen las conexiones de un cliente PostgreSQL.   | 
|  `ERROR XX000: Unknown error.`   |   Se ha producido un error desconocido.   |   Contacte con AWS Support para que investiguemos el problema.   | 
|  `ERROR 08000: Timed-out waiting to acquire database connection.`   |   El proxy ha agotado el tiempo de espera para adquirir una conexión de base de datos en el tiempo especificado por la configuración `ConnectionBorrowTimeout`. Algunas posibles razones incluyen las siguientes:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  |   Las posibles soluciones son las siguientes:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  `ERROR XX000: Request returned an error: database_error.`   |   La conexión de base de datos establecida desde el proxy devolvió un error.   |   La solución depende del error específico de la base de datos. Un ejemplo es: `Request returned an error: database "your-database-name" does not exist`. Esto significa que el nombre de base de datos especificado no existe en el servidor de bases de datos. O significa que el nombre de usuario utilizado como nombre de base de datos (si no se especifica un nombre de base de datos) no existe en el servidor.   | 
|  `ERROR 53300: The IAM authentication failed because of too many competing requests.`  |  El número de solicitudes simultáneas con autenticación de IAM desde el cliente al proxy ha superado el límite.  |  Reduzca la velocidad en la que se establecen las conexiones que utilizan la autenticación de IAM desde un cliente PostgreSQL.  | 
|  `ERROR 28000: Enable IAM authentication for the client connection to the proxy and try again.`  |  RDS Proxy no se puede conectar a la base de datos porque la autenticación de IAM no está habilitada para la conexión del cliente al proxy. Esto ocurre cuando el parámetro `DefaultAuthScheme` del proxy está configurado como `IAM_AUTH` con un usuario registrado, pero el cliente utiliza la autenticación de contraseñas en lugar de la autenticación de IAM.  |  Habilite la autenticación de IAM para la conexión del cliente al proxy e inténtelo de nuevo.  | 
|  `ERROR 28000: Configure IAM authentication as the DefaultAuthScheme in your proxy and try again.`  |  RDS Proxy no se puede conectar a la base de datos porque `DefaultAuthScheme` no está configurado en `IAM_AUTH`. El parámetro `DefaultAuthScheme` del proxy está establecido en `NONE`, pero el cliente está intentando utilizar la autenticación de IAM.  |  Establezca `DefaultAuthScheme` en `IAM_AUTH` para el proxy e inténtelo de nuevo.  | 

### Se ha eliminado la solución de problemas de una base de datos de `postgres`
<a name="rds-proxy-PostgreSQL-troubleshooting.postgresDBDelete"></a>

Si elimina la base de datos de `postgres` de la instancia por error, tendrá que restaurarla para restablecer la conectividad con la instancia. Ejecute los siguientes comandos dentro de la instancia de base de datos:

```
CREATE DATABASE postgres;
GRANT CONNECT ON DATABASE postgres TO rdsproxyadmin;
```

# Uso del proxy de RDS con AWS CloudFormation
<a name="rds-proxy-cfn"></a>

 Puede usar el proxy de RDS con AWS CloudFormation. Esto le ayuda a crear grupos de recursos relacionados. Dicho grupo puede incluir un proxy que se puede conectar a una instancia de base de datos de Amazon RDS. La compatabilidad del proxy de RDS en CloudFormation implica dos nuevos tipos de registro: `DBProxy` y `DBProxyTargetGroup`. 

 En la siguiente descripción, se muestra una plantilla de CloudFormation de ejemplo para el proxy de RDS. 

```
Resources:
 DBProxy:
   Type: AWS::RDS::DBProxy
   Properties:
     DBProxyName: CanaryProxy
     EngineFamily: MYSQL
     RoleArn:
      Fn::ImportValue: SecretReaderRoleArn
     Auth:
       - {AuthScheme: SECRETS, SecretArn: !ImportValue ProxySecret, IAMAuth: DISABLED}
     VpcSubnetIds:
       Fn::Split: [",", "Fn::ImportValue": SubnetIds]

 ProxyTargetGroup: 
   Type: AWS::RDS::DBProxyTargetGroup
   Properties:
     DBProxyName: CanaryProxy
     TargetGroupName: default
     DBInstanceIdentifiers: 
       - Fn::ImportValue: DBInstanceName
   DependsOn: DBProxy
```

 Para obtener más información sobre los recursos de este ejemplo, consulte [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html) y [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html). 

 Para obtener más información acerca de los recursos que puede crear mediante CloudFormation, consulte la [Referencia del tipo de recurso de RDS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_RDS.html). 