Résolution des problèmes liés à Amazon QLDB - Base de données Amazon Quantum Ledger (AmazonQLDB)

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.

Résolution des problèmes liés à Amazon QLDB

Important

Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez Migrer un Amazon QLDB Ledger vers Amazon Aurora SQL Postgre.

Les sections suivantes fournissent une liste agrégée des erreurs courantes que vous pouvez rencontrer lors de l'utilisation d'AmazonQLDB, ainsi que des conseils pour les résoudre.

Pour obtenir des conseils de résolution des problèmes spécifiques à IAM l'accès, consultezRésolution des problèmes d'QLDBidentité et d'accès à Amazon.

Pour connaître les meilleures pratiques relatives au réglage de vos instructions partiQL, consultez. Optimisation des performances des requêtes

Exécution de transactions à l'aide du QLDB pilote

Cette section répertorie les exceptions courantes que le QLDB pilote Amazon peut renvoyer lorsque vous l'utilisez pour exécuter des transactions partiQL sur un registre. Pour en savoir plus sur cette fonction, consultez Commencer à utiliser le chauffeur. Pour connaître les meilleures pratiques relatives à la configuration et à l'utilisation du pilote, consultezRecommandations pour les conducteurs.

Chaque exception inclut un message d'erreur spécifique, suivi d'une brève description et de suggestions de solutions possibles.

CapacityExceededException

Message : Capacité dépassée

Amazon QLDB a rejeté la demande car elle dépassait la capacité de traitement du registre. QLDBapplique une limite d'échelle interne par registre afin de maintenir la santé et les performances du service. Cette limite varie en fonction de la charge de travail de chaque demande individuelle. Par exemple, une demande peut avoir une charge de travail accrue si elle effectue des transactions de données inefficaces, telles que des analyses de tables résultant d'une requête qualifiée non liée à un index.

Nous vous recommandons d'attendre avant de réessayer la demande. Si votre application rencontre régulièrement cette exception, optimisez vos relevés et diminuez le taux et le volume des demandes que vous envoyez au registre. Parmi les exemples d'optimisation des instructions, citons l'exécution de moins d'instructions par transaction et le réglage des index de vos tables. Pour savoir comment optimiser les instructions et éviter les scans de tables, consultezOptimisation des performances des requêtes.

Nous vous recommandons également d'utiliser la dernière version du QLDB pilote. Le pilote applique une politique de nouvelle tentative par défaut qui utilise Exponential Backoff et Jitter pour réessayer automatiquement en cas d'exceptions telles que celle-ci. Le concept du recul exponentiel consiste à utiliser des temps d'attente de plus en plus longs entre les tentatives pour des réponses d'erreur consécutives.

InvalidSessionException

Message : Transaction transactionId a expiré

Une transaction a dépassé sa durée de vie maximale. Une transaction peut être exécutée pendant 30 secondes au maximum avant d'être validée. Passé ce délai, tout travail effectué sur la transaction est QLDB rejeté et la session est supprimée. Cette limite protège le client contre les fuites de sessions en démarrant des transactions et non en les validant ou en les annulant.

S'il s'agit d'une exception courante dans votre application, il est probable que l'exécution des transactions soit tout simplement trop longue. Si l'exécution des transactions prend plus de 30 secondes, optimisez vos relevés pour accélérer les transactions. Parmi les exemples d'optimisation des instructions, citons l'exécution de moins d'instructions par transaction et le réglage des index de vos tables. Pour plus d’informations, consultez Optimisation des performances des requêtes.

InvalidSessionException

Message : Séance sessionId a expiré

QLDBa abandonné la session car elle dépassait sa durée de vie totale maximale. QLDBannule les sessions au bout de 13 à 17 minutes, quelle que soit la transaction active. Les sessions peuvent être perdues ou perturbées pour un certain nombre de raisons, telles qu'une panne matérielle, une défaillance du réseau ou le redémarrage d'applications. Impose donc QLDB une durée de vie maximale aux sessions afin de garantir la résilience du logiciel client en cas d'échec de session.

Si vous rencontrez cette exception, nous vous recommandons d'acquérir une nouvelle session et de réessayer la transaction. Nous recommandons également d'utiliser la dernière version du QLDB pilote, qui gère le pool de sessions et son état de santé pour le compte de l'application.

InvalidSessionException

Message : Aucune session de ce type

Le client a essayé d'effectuer une transaction en QLDB utilisant une session qui n'existe pas. En supposant que le client utilise une session qui existait auparavant, il est possible que la session n'existe plus pour l'une des raisons suivantes :

  • Si une session est impliquée dans une défaillance interne du serveur (c'est-à-dire une erreur avec le code de HTTP réponse 500), vous QLDB pouvez choisir de supprimer complètement la session plutôt que d'autoriser le client à effectuer une transaction avec une session dont l'état est incertain. Ensuite, toute tentative de nouvelle tentative sur cette session échoue avec cette erreur.

  • Les sessions expirées sont finalement oubliées parQLDB. Ensuite, toute tentative de continuer à utiliser la session entraîne cette erreur, plutôt que l'erreur initialeInvalidSessionException.

Si vous rencontrez cette exception, nous vous recommandons d'acquérir une nouvelle session et de réessayer la transaction. Nous recommandons également d'utiliser la dernière version du QLDB pilote, qui gère le pool de sessions et son état de santé pour le compte de l'application.

RateExceededException

Message : Le taux a été dépassé

QLDBlimitait un client en fonction de l'identité de l'appelant. QLDBapplique la régulation par région et par compte à l'aide d'un algorithme de régulation par compartiment à jetons. QLDBfait cela pour améliorer les performances du service et garantir une utilisation équitable pour tous les QLDB clients. Par exemple, essayer d'acquérir un grand nombre de sessions simultanées à l'aide de cette StartSessionRequest opération peut entraîner un ralentissement.

Pour préserver l'intégrité de votre application et limiter les ralentissements supplémentaires, vous pouvez réessayer cette exception en utilisant Exponential Backoff et Jitter. Le concept du recul exponentiel consiste à utiliser des temps d'attente de plus en plus longs entre les tentatives pour des réponses d'erreur consécutives. Nous vous recommandons d'utiliser la dernière version du QLDB pilote. Le pilote applique une politique de nouvelle tentative par défaut qui utilise un décalage et une instabilité exponentiels pour réessayer automatiquement en cas d'exceptions telles que celle-ci.

La dernière version du QLDB pilote peut également être utile si votre application est constamment limitée par QLDB les StartSessionRequest appels. Le pilote gère un pool de sessions qui sont réutilisées au cours des transactions, ce qui peut contribuer à réduire le nombre d'StartSessionRequestappels effectués par votre application. Pour demander une augmentation des API limites de régulation, contactez le AWS Support Centre.

LimitExceededException

Message : Dépassement de la limite de session

Un registre a dépassé son quota (également appelé limite) en ce qui concerne le nombre de sessions actives. Ce quota est défini dansQuotas et limites sur Amazon QLDB. Le nombre de sessions actives d'un registre est finalement constant, et les registres dont le quota est constamment proche du quota peuvent régulièrement être confrontés à cette exception.

Pour préserver l'intégrité de votre application, nous vous recommandons de réessayer cette exception. Pour éviter cette exception, assurez-vous de ne pas avoir configuré plus de 1 500 sessions simultanées à utiliser pour un seul registre pour tous les clients. Par exemple, vous pouvez utiliser la maxConcurrentTransactionsméthode du QLDBpilote Amazon pour Java pour configurer le nombre maximum de sessions disponibles dans une instance de pilote.

QldbClientException

Message : Un résultat diffusé n'est valide que lorsque la transaction parent est ouverte

La transaction est clôturée et ne peut pas être utilisée pour récupérer les résultatsQLDB. Une transaction est clôturée lorsqu'elle est validée ou annulée.

Cette exception se produit lorsque le client travaille directement avec l'Transactionobjet et essaie d'en récupérer les résultats QLDB après avoir validé ou annulé une transaction. Pour atténuer ce problème, le client doit lire les données avant de clôturer la transaction.

Exporter les données du journal

Cette section répertorie les exceptions courantes qui QLDB peuvent être renvoyées lorsque vous exportez des données de journal d'un registre vers un compartiment Amazon S3. Pour en savoir plus sur cette fonction, consultez Exportation de données de journaux depuis Amazon QLDB.

Chaque exception inclut un message d'erreur spécifique, suivi d'une brève description et de suggestions de solutions possibles.

AccessDeniedException

Message : Utilisateur : userARN n'est pas autorisé à exécuter : iam : PassRole on resource : roleARN

Vous n'êtes pas autorisé à transmettre un IAM rôle au QLDB service. QLDBnécessite un rôle pour toutes les demandes d'exportation de journaux, et vous devez disposer des autorisations pour transmettre ce rôle àQLDB. Le rôle fournit des autorisations QLDB d'écriture dans le compartiment Amazon S3 que vous avez spécifié.

Vérifiez que vous définissez une IAM politique qui autorise l'exécution de l'PassRoleAPIopération sur la ressource de IAM rôle que vous avez spécifiée pour le QLDB service (qldb.amazonaws.com). Pour un exemple de stratégie, consultez Exemples de politiques basées sur l'identité pour Amazon QLDB.

IllegalArgumentException

Message : une erreur QLDB s'est produite lors de la validation de la configuration S3 : errorCode errorMessage

Cette erreur peut être due au fait que le compartiment Amazon S3 fourni n'existe pas dans Amazon S3. Ou bien, QLDB ne dispose pas des autorisations suffisantes pour écrire des objets dans le compartiment Amazon S3 que vous avez spécifié.

Vérifiez que le nom du compartiment S3 que vous fournissez dans votre demande de tâche d'exportation est correct. Pour plus d'informations sur la dénomination des compartiments, consultez la section Restrictions et limitations des compartiments dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Vérifiez également que vous définissez une politique pour le compartiment que vous avez spécifié qui accorde PutObject des PutObjectAcl autorisations au QLDB service (qldb.amazonaws.com). Pour en savoir plus, veuillez consulter la section Autorisations d'exportation.

IllegalArgumentException

Message : réponse inattendue d'Amazon S3 lors de la validation de la configuration S3. Réponse de S3 : errorCode errorMessage

La tentative d'écriture des données d'exportation du journal dans le compartiment S3 fourni a échoué avec la réponse d'erreur Amazon S3 fournie. Pour plus d'informations sur les causes possibles, consultez la section Résolution des problèmes liés à Amazon S3 dans le guide de l'utilisateur d'Amazon Simple Storage Service.

IllegalArgumentException

Message : le préfixe du compartiment Amazon S3 ne doit pas dépasser 128 caractères

Le préfixe fourni dans la demande d'exportation du journal contient plus de 128 caractères.

IllegalArgumentException

Message : La date de début ne doit pas être supérieure à la date de fin

Les deux InclusiveStartTime ExclusiveEndTime doivent être au format ISO8601 de date et d'heure et en temps universel coordonné (UTC).

IllegalArgumentException

Message : La date de fin ne peut pas être future

Les deux InclusiveStartTime ExclusiveEndTime doivent être au format ISO 8601 date et heure et enUTC.

IllegalArgumentException

Message : Le paramètre de chiffrement d'objet fourni (S3EncryptionConfiguration) n'est pas compatible avec une clé AWS Key Management Service (AWS KMS)

Vous avez fourni KMSKeyArn l'un ObjectEncryptionType des deux NO_ENCRYPTION ouSSE_S3. Vous ne pouvez fournir qu'un client géré AWS KMS key pour un type de chiffrement d'objet deSSE_KMS. Pour en savoir plus sur les options de chiffrement côté serveur dans Amazon S3, consultez la section Protection des données à l'aide du chiffrement côté serveur dans le manuel Amazon S3 Developer Guide.

LimitExceededException

Message : Dépassement de la limite de 2 tâches d'exportation du Journal exécutées simultanément

QLDBimpose une limite par défaut de deux tâches d'exportation de journaux simultanées.

Diffusion de données de journaux

Cette section répertorie les exceptions courantes qui QLDB peuvent être renvoyées lorsque vous diffusez des données de journal depuis un registre vers Amazon Kinesis Data Streams. Pour en savoir plus sur cette fonction, consultez Diffusion en continu de données de journaux depuis Amazon QLDB.

Chaque exception inclut un message d'erreur spécifique, suivi d'une brève description et de suggestions de solutions possibles.

AccessDeniedException

Message : Utilisateur : userARN n'est pas autorisé à exécuter : iam : PassRole on resource : roleARN

Vous n'êtes pas autorisé à transmettre un IAM rôle au QLDB service. QLDBnécessite un rôle pour toutes les demandes de flux de journal, et vous devez disposer des autorisations pour transmettre ce rôle àQLDB. Le rôle fournit des autorisations QLDB d'écriture dans la ressource Amazon Kinesis Data Streams que vous avez spécifiée.

Vérifiez que vous définissez une IAM politique qui autorise l'exécution de l'PassRoleAPIopération sur la ressource de IAM rôle que vous avez spécifiée pour le QLDB service (qldb.amazonaws.com). Pour un exemple de stratégie, consultez Exemples de politiques basées sur l'identité pour Amazon QLDB.

IllegalArgumentException

Message : une erreur QLDB s'est produite lors de la validation de Kinesis Data Streams : Réponse de Kinesis : errorCode errorMessage

Cette erreur peut être due au fait que la ressource Kinesis Data Streams fournie n'existe pas. Ou bien, QLDB ne dispose pas des autorisations suffisantes pour écrire des enregistrements de données dans le flux de données Kinesis que vous avez spécifié.

Vérifiez que le flux de données Kinesis que vous fournissez dans votre demande de flux est correct. Pour plus d'informations, consultez la section Création et mise à jour de flux de données dans le manuel Amazon Kinesis Data Streams Developer Guide.

Vérifiez également que vous définissez une politique pour le flux de données Kinesis que vous avez spécifié qui accorde au QLDB service (qldb.amazonaws.com) des autorisations pour les actions suivantes. Pour plus d’informations, consultez Autorisations de diffusion.

  • kinesis:PutRecord

  • kinesis:PutRecords

  • kinesis:DescribeStream

  • kinesis:ListShards

IllegalArgumentException

Message : Réponse inattendue de Kinesis Data Streams lors de la validation de la configuration Kinesis. Réponse de Kinesis : errorCode errorMessage

La tentative d'écriture d'enregistrements de données dans le flux de données Kinesis fourni a échoué avec la réponse d'erreur Kinesis fournie. Pour plus d'informations sur les causes possibles, consultez la section Résolution des problèmes liés aux producteurs d'Amazon Kinesis Data Streams dans le manuel du développeur Amazon Kinesis Data Streams.

IllegalArgumentException

Message : La date de début ne doit pas être supérieure à la date de fin.

Les deux InclusiveStartTime ExclusiveEndTime doivent être au format ISO8601 de date et d'heure et en temps universel coordonné (UTC).

IllegalArgumentException

Message : La date de début ne peut pas être future.

Les deux InclusiveStartTime ExclusiveEndTime doivent être au format ISO 8601 date et heure et enUTC.

LimitExceededException

Message : Dépassement de la limite de 5 flux de Journal exécutés simultanément vers Kinesis Data Streams

QLDBapplique une limite par défaut de cinq flux de journaux simultanés.

Vérification des données du journal

Cette section répertorie les exceptions courantes qui QLDB peuvent être renvoyées lorsque vous vérifiez des données de journal dans un registre. Pour en savoir plus sur cette fonction, consultez Vérification des données sur Amazon QLDB.

Chaque exception inclut le message d'erreur spécifique, suivi des API opérations susceptibles de le générer, une brève description et des suggestions de solutions possibles.

IllegalArgumentException

Message : La valeur Ion fournie n'est pas valide et ne peut pas être analysée.

APIopérations : GetDigest, GetBlock, GetRevision

Assurez-vous de fournir une valeur Amazon Ion valide avant de réessayer votre demande.

IllegalArgumentException

Message : L'adresse de blocage fournie n'est pas valide.

APIopérations : GetDigest, GetBlock, GetRevision

Assurez-vous de fournir une adresse de blocage valide avant de réessayer votre demande. Une adresse de bloc est une structure Amazon Ion qui comporte deux champs : strandId etsequenceNo.

Par exemple : {strandId:"BlFTjlSXze9BIh1KOszcE3",sequenceNo:14}

IllegalArgumentException

Message : Le numéro de séquence de l'adresse de résumé fournie est supérieur au dernier enregistrement validé du fil.

APIopérations : GetDigest, GetBlock, GetRevision

L'adresse du résumé que vous fournissez doit avoir un numéro de séquence inférieur ou égal au numéro de séquence du dernier enregistrement validé du volet du journal. Avant de réessayer votre demande, assurez-vous de fournir une adresse de résumé avec un numéro de séquence valide.

IllegalArgumentException

Message : L'ID de brin de l'adresse de bloc fournie n'est pas valide.

APIopérations : GetDigest, GetBlock, GetRevision

L'adresse de bloc que vous fournissez doit avoir un identifiant de volet correspondant à l'identifiant de volet du journal. Avant de réessayer votre demande, assurez-vous de fournir une adresse de blocage avec un identifiant de chaîne valide.

IllegalArgumentException

Message : Le numéro de séquence de l'adresse de bloc fournie est supérieur au dernier enregistrement validé du brin.

APIopérations : GetBlock, GetRevision

L'adresse de bloc que vous fournissez doit avoir un numéro de séquence inférieur ou égal au numéro de séquence du dernier enregistrement validé du brin. Avant de réessayer votre demande, assurez-vous de fournir une adresse de blocage avec un numéro de séquence valide.

IllegalArgumentException

Message : L'ID de volet de l'adresse de bloc fournie doit correspondre à l'ID de volet de l'adresse de résumé fournie.

APIopérations : GetBlock, GetRevision

Vous ne pouvez vérifier une révision ou un bloc de document que s'il existe dans le même volet de journal que le résumé que vous fournissez.

IllegalArgumentException

Message : Le numéro de séquence de l'adresse de bloc fournie ne doit pas être supérieur au numéro de séquence de l'adresse de résumé fournie.

APIopérations : GetBlock, GetRevision

Vous ne pouvez vérifier une révision ou un bloc de document que s'il est couvert par le résumé que vous fournissez. Cela signifie qu'il a été enregistré dans le journal avant l'adresse du résumé.

IllegalArgumentException

Message : L'ID de document fourni n'a pas été trouvé dans le bloc à l'adresse de bloc spécifiée.

APIopération : GetRevision

L'identifiant du document que vous fournissez doit figurer dans l'adresse de bloc que vous fournissez. Avant de réessayer votre demande, assurez-vous que ces deux paramètres sont cohérents.