

# 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;
```