Solución de problemas de la API de datos de Amazon RDS - Amazon Aurora

Solución de problemas de la API de datos de Amazon RDS

Use las siguientes secciones, tituladas con mensajes de error comunes, para ayudar a solucionar problemas que tenga con la API de datos de Amazon RDS (API de datos).

No se ha encontrado la transacción <transaction_ID>

En este caso, el ID de transacción especificado en la API de datos no se ha podido encontrar. La causa de este problema se anexa al mensaje de error y es uno de los siguientes:

  • La transacción puede haber caducado.

    Asegúrese también de que cada llamada transaccional se realice antes de que transcurran tres minutos con respecto al uso anterior.

    También es posible que el ID de transacción especificado no se creara con una llamada a BeginTransaction. Asegúrese de que su llamada tenga un ID de transacción válido.

  • Una llamada anterior dio lugar a la finalización de la transacción.

    La transacción ya la ha finalizado su CommitTransaction o la llamada a RollbackTransaction.

  • La transacción se ha anulado debido a un error de una llamada anterior.

    Comprueba si sus llamadas anteriores han arrojado excepciones.

Para obtener más información acerca de la ejecución de transacciones, consulte Llamadas a la API de datos de Amazon RDS.

El paquete de la consulta es demasiado grande

En este caso, el conjunto de resultados devuelto para una fila era demasiado grande. El límite de tamaño de la API de datos es 64 KB por fila en el conjunto de resultados devuelto por la base de datos.

Para solventar este problema, asegúrese de que cada fila de un conjunto de resultados sea de 64 KB o menos.

Límite de tamaño superado de respuesta de base de datos

En este caso, el tamaño del conjunto de resultados devuelto por la base de datos era demasiado grande. El límite de la API de datos es 1 MB en el conjunto de resultados devuelto por la base de datos.

Para resolver este problema, asegúrese de que las llamada a la API de datos devuelvan 1 MiB de datos o menos. Si necesita devolver más de 1 MiB, puede usar varias llamadas ExecuteStatement con la cláusula LIMIT en la consulta.

Para obtener más información acerca de la cláusula LIMIT, consulte SELECT Syntax en la documentación de MySQL.

HttpEndpoint no está habilitado para el clúster <clúster_ID>

Compruebe las siguientes posibles causas de este problema:

  • El clúster de base de datos de Aurora no admite la API de datos. Para obtener información sobre los tipos de clústeres de bases de datos compatibles con la API de datos de RDS, consulte Disponibilidad de regiones y versiones para la API de datos de Amazon RDS.

  • La API de datos no está habilitada para el clúster de base de datos de Aurora. Para utilizar la API de datos con un clúster de base de datos de Aurora, la API de datos debe estar habilitada para el clúster de base de datos. Para obtener más información sobre la habilitación de la API de datos, consulte Habilitación de la API de datos de Amazon RDS.

  • Se cambió el nombre del clúster de base de datos después de que la API de datos se habilitara para él. En ese caso, desactive la API de datos de ese clúster y vuelva a habilitarla.

  • El ARN que ha especificado no coincide exactamente con el ARN del clúster. Compruebe que el ARN devuelto de otro origen o creado por lógica de programa coincida exactamente con el ARN del clúster. Por ejemplo, asegúrese de que el ARN que utiliza tenga la mayúscula o minúscula correcta para todos los caracteres alfabéticos.

DatabaseErrorException: Transaction is still running a query

Si su aplicación envía una solicitud con un ID de transacción y esa transacción está procesando otra solicitud en ese momento, la API de datos devuelve este error a la aplicación inmediatamente. Esta condición puede producirse si la aplicación realiza solicitudes asíncronas con un mecanismo como el de las “promesas” en Javascript.

Para solucionar este problema, espere a que finalice la solicitud anterior y, a continuación, vuelva a intentarlo. Puede volver a intentarlo hasta que el error deje de producirse o hasta que la aplicación reciba algún tipo de error diferente.

Esta condición puede ocurrir con la API de datos para las instancias de Aurora Serverless v2 y las aprovisionadas. En la API de datos de Aurora Serverless v1, las solicitudes subsiguientes para el mismo ID de transacción esperan automáticamente a que finalice la solicitud anterior. Sin embargo, este comportamiento antiguo podría provocar que se agoten los tiempos de espera debido a que la solicitud anterior ha tardado demasiado. Si va a migrar una aplicación de la API de datos antigua que realiza solicitudes simultáneas, modifique la lógica de gestión de excepciones para tener en cuenta este nuevo tipo de error.

Excepción de resultado no compatible

La API de datos no admite todos los tipos de datos. Este error se produce al ejecutar una consulta que devuelve un tipo de datos no compatible.

Para evitar este problema, convierta el tipo de datos no compatible a TEXT. Por ejemplo:

SELECT custom_type::TEXT FROM my_table; -- OR SELECT CAST(custom_type AS TEXT) FROM my_table;

Las instrucciones múltiples no son compatibles

Las instrucciones múltiples no son compatibles con la API de datos para Aurora Serverless v2 y los clústeres aprovisionados. Intentar ejecutar varias instrucciones en una sola llamada a la API produce este error.

Para ejecutar varias instrucciones, utilice llamadas a la API independientes ExecuteStatement o utilice la API BatchExecuteStatement para el procesamiento por lotes.

El parámetro de esquema no es compatible

Aurora Serverless v1 ignora en modo silencioso el parámetro de esquema. Sin embargo, Aurora Serverless v2 y los clústeres aprovisionados rechazan explícitamente las llamadas a la API que incluyen el parámetro de esquema.

Para resolver este problema, elimine el parámetro schema de todas las llamadas a la API de datos cuando utilice Aurora Serverless v2 o clústeres aprovisionados.

Problemas de conectividad de IPv6

Si tiene problemas al conectarse a la API de datos mediante puntos de conexión de IPv6, compruebe las siguientes causas posibles:

  • La red no admite IPv6: compruebe que la infraestructura de red sea compatible con IPv6 y que el enrutamiento de IPv6 esté configurado correctamente.

  • Problemas de resolución de DNS: asegúrese de que el solucionador de DNS pueda resolver los registros AAAA de los puntos de conexión de doble pila (por ejemplo, rds-data.us-east-1.api.aws).

  • Configuración del grupo de seguridad: actualice las reglas del grupo de seguridad para permitir el tráfico de IPv6 en el puerto 443 (HTTPS). Agregue reglas para los bloques de CIDR de IPv6 (por ejemplo, ::/0 para todas las direcciones IPv6).

  • Configuración de las ACL de red: asegúrese de que las ACL de red permitan el tráfico de IPv6 en los puertos necesarios.

  • Compatibilidad de biblioteca de cliente: compruebe que las bibliotecas de cliente de HTTP y los AWS SDK admiten la conectividad de IPv6 y de doble pila.

  • Configuración de punto de conexión de VPC: si utiliza PrivateLink, asegúrese de que el punto de conexión de VPC esté configurado para admitir IPv6 y de que las subredes asociadas tengan bloques de CIDR de IPv6 asignados.

Para solucionar problemas de conectividad de IPv6:

  1. Pruebe la conectividad mediante los puntos de conexión exclusivos de IPv4 (.amazonaws.com) para comprobar que el problema es específico de IPv6.

  2. Utilice herramientas de diagnóstico de red para verificar la conectividad de IPv6 con los puntos de conexión de doble pila.

  3. Compruebe los registros de CloudTrail para ver si hay errores de autenticación o autorización cuando utilice puntos de conexión de IPv6.

  4. Compruebe que la aplicación esté configurada correctamente para usar las nuevas URL de punto de conexión de doble pila.