Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Dépannage de l’API de données Amazon RDS
Utilisez les sections suivantes, dont le titre correspond aux messages d’erreur courants, pour vous aider à résoudre les problèmes que vous rencontrez avec l’API de données Amazon RDS (API de données).
Transaction <transaction_ID> isn’t found
Dans ce cas, l’ID de transaction spécifié dans un appel de l’API de données est introuvable. La cause de ce problème, parmi les suivantes, est ajoutée au message d’erreur :
-
La transaction peut avoir expiré.Assurez-vous que chaque appel transactionnel s’exécute dans un délai de trois minutes à la suite du précédent.
Il est également possible que l'identifiant de transaction spécifié n'ait pas été créé par un BeginTransactionappel. Assurez-vous que l’ID de transaction de votre appel est valide.
-
Un appel précédent a entraîné l’arrêt de votre transaction.La transaction a déjà été arrêtée par votre appel
CommitTransactionouRollbackTransaction. -
La transaction a été abandonnée en raison d’une erreur issue d’un appel précédent.Vérifiez si vos appels précédents ont généré des exceptions.
Pour plus d’informations sur l’exécution des transactions, consultez Appel de l’API de données Amazon RDS.
Packet for query is too large
Dans ce cas, le jeu de résultats renvoyé pour une ligne était trop volumineux. La taille de l’API de données ne doit pas dépasser 64 Ko par ligne dans le jeu de résultat renvoyé par la base de données.
Pour résoudre ce problème, assurez-vous que la taille de chaque ligne d’un jeu de résultat est inférieure ou égale à 64 Ko.
Database Response Exceeded Size Limit
Dans ce cas, la taille du jeu de résultat renvoyé par la base de données était trop grande. La limite de l’API de données est de 1 Mio dans le jeu de résultats renvoyé par la base de données.
Pour résoudre ce problème, assurez-vous que les appels à l’API de données renvoient au maximum 1 Mio. Si vous avez besoin de renvoyer plus de 1 Mio, vous pouvez utiliser plusieurs appels ExecuteStatement avec la clause LIMIT dans votre requête.
Pour plus d’informations sur la clause LIMIT, consultez Syntaxe SELECT
HttpEndpointn'est pas activé pour le cluster <cluster_ID>
Vérifiez les causes potentielles suivantes de ce problème :
-
Le cluster de bases de données Aurora ne prend pas en charge l’API de données. Pour plus d’informations sur les types de clusters de bases de données pris en charge par l’API de données RDS, consultez Disponibilité des régions et des versions de pour l’API de données Amazon RDS.
-
L’API de données n’est pas activée pour le cluster de bases de données Aurora. Pour utiliser l’API de données avec un cluster de bases de données Aurora, l’API de données doit être activée pour le cluster de bases de données. Pour plus d’informations sur l’activation de l’API de données, consultez Activation de l’API de données Amazon RDS.
-
Le cluster de bases de données a été renommé après l’activation de l’API de données. Dans ce cas, désactivez l’API de données pour ce cluster, puis réactivez-la.
-
L’ARN que vous avez spécifié ne correspond pas précisément à l’ARN du cluster. Vérifiez que l’ARN renvoyé par une autre source ou créé par la logique du programme correspond exactement à l’ARN du cluster. Par exemple, assurez-vous que l’ARN que vous utilisez respecte la casse adéquate pour tous les caractères alphabétiques.
DatabaseErrorException: La transaction exécute toujours une requête
Lorsque votre application envoie une demande avec un ID de transaction qui exécute déjà une autre requête, l’API de données renvoie immédiatement cette erreur à votre application. Cette situation peut se produire si votre application envoie des demandes de façon asynchrone, par exemple à l’aide d’un mécanisme comme les « promesses » en Javascript.
Pour résoudre ce problème, attendez que la demande précédente soit terminée, puis réessayez. Vous pouvez répéter la tentative jusqu’à ce que l’erreur disparaisse ou qu’un autre type d’erreur soit renvoyé à l’application.
Cette condition peut se produire avec l’API de données pour Aurora Serverless v2 et les instances provisionnées. Dans l’API de données pour Aurora Serverless v1, les demandes envoyées avec le même ID de transaction sont mises en attente jusqu’à ce que la précédente soit terminée. Cependant, cet ancien comportement peut entraîner des délais d’expiration si la demande précédente met trop de temps à s’exécuter. Si vous migrez une ancienne application d’API de données qui envoie des demandes simultanées, adaptez votre logique de gestion des exceptions afin de prendre en compte ce nouveau type d’erreur.
Exception de résultat non pris en charge
L’API de données ne prend pas en charge tous les types de données. Cette erreur se produit lorsque vous exécutez une requête qui renvoie un type de données non pris en charge.
Pour contourner ce problème, convertissez le type de données non pris en charge en TEXT. Par exemple :
SELECT custom_type::TEXT FROM my_table; -- OR SELECT CAST(custom_type AS TEXT) FROM my_table;
Les instructions multiples ne sont pas prises en charge
Les instructions multiples ne sont pas prises en charge dans l’API de données pour Aurora sans serveur v2 et les clusters provisionnés. Toute tentative d’exécuter plusieurs instructions dans un seul appel d’API entraîne cette erreur.
Pour exécuter des instructions multiples, utilisez des appels d’API ExecuteStatement distincts ou utilisez l’API BatchExecuteStatement pour le traitement par lots.
Le paramètre de schéma n’est pas pris en charge
Aurora sans serveur v1 ignore silencieusement le paramètre de schéma. Cependant, Aurora sans serveur v2 et les clusters provisionnés rejettent explicitement les appels d’API contenant le paramètre de schéma.
Pour résoudre ce problème, supprimez le paramètre de schéma de tous les appels à l’API de données lorsque vous utilisez Aurora sans serveur v2 ou des clusters provisionnés.
IPv6 problèmes de connectivité
Si vous rencontrez des problèmes lors de la connexion à l'API de données à l'aide de IPv6 points de terminaison, vérifiez les causes potentielles suivantes :
-
Le réseau n'est pas compatible IPv6 : vérifiez que votre infrastructure réseau est compatible IPv6 et que IPv6 le routage est correctement configuré.
-
Problèmes de résolution DNS : assurez-vous que votre résolveur DNS peut résoudre les enregistrements AAAA pour les points de terminaison Dual-Stack (par ex.,
rds-data.us-east-1.api.aws). -
Configuration du groupe de sécurité : mettez à jour les règles du groupe de sécurité pour autoriser le IPv6 trafic sur le port 443 (HTTPS). Ajoutez des règles pour les blocs IPv6 CIDR (par exemple,
::/0pour toutes les IPv6 adresses). -
Configuration de l'ACL réseau : assurez-vous que le réseau ACLs autorise le IPv6 trafic sur les ports requis.
-
Compatibilité avec les bibliothèques clientes : vérifiez que vos bibliothèques clientes HTTP AWS SDKs prennent en charge IPv6 la connectivité à double pile.
-
Configuration du point de terminaison VPC : si vous l'utilisez PrivateLink, assurez-vous que votre point de terminaison VPC est configuré pour prendre en charge IPv6 et que des blocs d'adresse CIDR sont attribués aux sous-réseaux associés. IPv6
Pour résoudre les problèmes de IPv6 connectivité, procédez comme suit :
-
Testez la connectivité à l'aide des points de terminaison IPv4 -only (
.amazonaws.com) pour vérifier que le problème est spécifique à. IPv6 -
Utilisez les outils de diagnostic réseau pour vérifier la IPv6 connectivité aux points de terminaison à double pile.
-
Vérifiez les CloudTrail journaux pour détecter toute erreur d'authentification ou d'autorisation lors de l'utilisation de IPv6 points de terminaison.
-
Vérifiez que votre application est correctement configurée pour utiliser le nouveau point de terminaison URLs à double pile.