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
deAVAILABLE
indica que el proxy puede conectarse a la instancia de base de datos. -
Un valor
State
deUNAVAILABLE
indica un problema de conexión temporal o permanente. En este caso, examine los camposReason
yDescription
. Por ejemplo, siReason
tiene un valor dePENDING_PROXY_CAPACITY
, intente conectarse de nuevo después de que el proxy finalice su operación de escalado. SiReason
tiene un valor deUNREACHABLE
,CONNECTION_FAILED
oAUTH_FAILURE
, utilice la explicación del campoDescription
que le ayudará a diagnosticar el problema. -
El campo
State
es posible que tenga un valor deREGISTERING
durante un breve tiempo antes de cambiar aAVAILABLE
oUNAVAILABLE
.
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 -zxPostgreSQL_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 |
Es posible que encuentre los siguientes problemas al crear un nuevo proxy o al conectarse a un proxy.
Error | Causas o soluciones provisionales |
---|---|
|
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 (
|
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 (
|
El número de solicitudes de conexión simultáneas del cliente al proxy ha superado el límite. |
|
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
|
El valor establecido para el parámetro |
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
|
ERROR 2026 (HY000): SSL connection error: Internal Server
|
Error en el protocolo de enlace TLS al proxy. Algunas posibles razones incluyen las siguientes:
|
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:
|
Es posible que encuentre los siguientes problemas al conectarse a un proxy PostgreSQL.
Error | Causa | Solución |
---|---|---|
|
El usuario ha intentado conectarse a la base de datos mediante la autenticación de IAM con la configuración |
El usuario necesita conectarse a la base de datos utilizando la configuración mínima de |
|
El usuario habilitó la opción Exigir Transport Layer Security pero intentó conectarse con |
Para corregir este error, realice alguna de las siguientes acciones:
|
|
Este error es posible que se deba a las siguientes razones:
|
Para corregir este error, haga lo siguiente:
|
|
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. |
|
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. |
|
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. |
|
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 |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Un cliente intentó conectarse mediante la autenticación de IAM, pero SSL no estaba habilitado. |
Habilite SSL en el cliente PostgreSQL. |
|
Se ha producido un error desconocido. |
Contacte con AWS Support para que investiguemos el problema. |
|
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:
|
Las posibles soluciones son las siguientes:
|
|
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: |