Solución de problemas de RDS Proxy - Amazon Relational Database Service

Solución de problemas de RDS Proxy

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.

Verificación de la conectividad para un proxy

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. Examine también el grupo de destino asociado mediante el comando describe-db-proxy-target-groups. 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. 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 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 }

Problemas y soluciones comunes de

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

failure

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.

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.

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.

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_value) 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_value) 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_set_client'' 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:

  • Desactive la configuración Exigir Transport Layer Security para el proxy.

  • Conéctese a la base de datos mediante la configuración mínima de ssl-mode=REQUIRED en el cliente de MySQL.

ERROR 2026 (HY000): SSL connection error: Internal Server Error

Error en el protocolo de enlace TLS al proxy. Algunas posibles razones incluyen las siguientes:

  • Se requiere SSL, pero el servidor no lo admite.

  • Se ha producido un error interno del servidor.

  • Se ha producido un protocolo de enlace erróneo.

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:

  • El proxy no puede establecer una conexión con la base de datos porque se ha llegado al máximo de conexiones.

  • El proxy no puede establecer una conexión a base de datos porque la base de datos no está disponible.

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

Error Causa Solución

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.

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:

  • Desactive la opción del proxy Exigir Transport Layer Security.

  • Conectarse a la base de datos mediante la configuración mínima de sslmode=allow en el cliente PostgreSQL.

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:

  • El cliente proporcionó el nombre de usuario de IAM incorrecto.

  • El cliente proporcionó un token de autorización de IAM incorrecto para el usuario.

  • El cliente está utilizando una política de IAM que no tiene los permisos necesarios.

  • El cliente proporcionó un token de autorización de IAM caducado para el usuario.

Para corregir este error, haga lo siguiente:

  1. Confirme que existe el usuario de IAM proporcionado.

  2. Confirme que el token de autorización de IAM pertenece al usuario de IAM proporcionado.

  3. Confirme que la política de IAM tiene los permisos adecuados para RDS.

  4. Compruebe la validez del token de autorización de IAM utilizado.

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 políticas de AWS Identity and Access Management (IAM) para RDS Proxy.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Unknown error.

Se ha producido un error desconocido.

Contacte con AWS Support para que investiguemos el problema.

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:

  • El proxy no puede establecer una conexión con la base de datos porque se ha alcanzado el número máximo de conexiones.

  • El proxy no puede establecer una conexión con la base de datos porque la base de datos no está disponible.

Las posibles soluciones son las siguientes:

  • Compruebe el destino del estado para ver si no está disponible.

  • Compruebe si hay transacciones de larga duración y/o consultas en ejecución. Pueden usar conexiones de bases de datos desde el grupo de conexiones durante mucho tiempo.

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.