Risoluzione dei problemi Amazon QLDB - Database Amazon Quantum Ledger (Amazon) QLDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi Amazon QLDB

Importante

Avviso di fine del supporto: i clienti esistenti potranno utilizzare Amazon QLDB fino alla fine del supporto il 31/07/2025. Per ulteriori dettagli, consulta Migrare un Amazon QLDB Ledger ad Amazon Aurora Postgre. SQL

Le seguenti sezioni forniscono un elenco aggregato di errori comuni che potresti riscontrare durante l'utilizzo di Amazon QLDB e indicazioni su come risolverli.

Per una guida alla risoluzione dei problemi specifica per IAM l'accesso, consulta. Risoluzione dei problemi relativi all'QLDBidentità e all'accesso ad Amazon

Per le migliori pratiche per ottimizzare le istruzioni PartiQL, vedere. Ottimizzazione delle prestazioni delle query

Esecuzione di transazioni utilizzando il driver QLDB

Questa sezione elenca le eccezioni comuni che il QLDB driver Amazon può restituire quando lo usi per eseguire transazioni PartiQL su un registro. Per ulteriori informazioni sull'utilizzo di questa caratteristica, consulta Guida introduttiva al driver. Per le migliori pratiche per la configurazione e l'utilizzo del driver, consulta. Consigli per i conducenti

Ogni eccezione include il messaggio di errore specifico, seguito da una breve descrizione e suggerimenti per possibili soluzioni.

CapacityExceededException

Messaggio: capacità superata

Amazon QLDB ha rifiutato la richiesta perché superava la capacità di elaborazione del registro. QLDBimpone un limite di scalabilità interno per registro per mantenere l'integrità e le prestazioni del servizio. Questo limite varia in base alla dimensione del carico di lavoro di ogni singola richiesta. Ad esempio, una richiesta può comportare un carico di lavoro maggiore se esegue transazioni di dati inefficienti, ad esempio scansioni di tabelle risultanti da una query qualificata non indicizzata.

Ti consigliamo di attendere prima di riprovare la richiesta. Se la tua applicazione riscontra costantemente questa eccezione, ottimizza i rendiconti e riduci la frequenza e il volume delle richieste inviate al registro. Esempi di ottimizzazione dei rendiconti includono l'esecuzione di un minor numero di istruzioni per transazione e l'ottimizzazione degli indici delle tabelle. Per informazioni su come ottimizzare le istruzioni ed evitare le scansioni delle tabelle, consulta. Ottimizzazione delle prestazioni delle query

Si consiglia inoltre di utilizzare la versione più recente del QLDB driver. Il driver ha una politica di riprova predefinita che utilizza Exponential Backoff e Jitter per riprovare automaticamente eccezioni come questa. Il concetto di backoff esponenziale consiste nell'utilizzare tempi di attesa progressivamente più lunghi tra un tentativo e l'altro per risposte di errore consecutive.

InvalidSessionException

Messaggio: Transazione transactionId è scaduto

Una transazione ha superato la sua durata massima. Una transazione può durare fino a 30 secondi prima di essere confermata. Dopo questo limite di timeout, qualsiasi lavoro svolto sulla transazione viene rifiutato e la sessione viene QLDB annullata. Questo limite protegge il cliente dalla perdita di sessioni avviando le transazioni e non eseguendole o annullandole.

Se questa è un'eccezione comune nella tua applicazione, è probabile che le transazioni richiedano semplicemente troppo tempo per essere eseguite. Se l'esecuzione delle transazioni richiede più di 30 secondi, ottimizza i rendiconti per velocizzarle. Esempi di ottimizzazione dei rendiconti includono l'esecuzione di un minor numero di istruzioni per transazione e l'ottimizzazione degli indici delle tabelle. Per ulteriori informazioni, consulta Ottimizzazione delle prestazioni delle query.

InvalidSessionException

Messaggio: sessione sessionId è scaduto

QLDBha scartato la sessione perché ha superato la sua durata totale massima. QLDBelimina le sessioni dopo 13-17 minuti, indipendentemente dalla transazione attiva. Le sessioni possono andare perse o compromesse per diversi motivi, ad esempio guasti hardware, errori di rete o riavvii delle applicazioni. Pertanto, QLDB impone una durata massima delle sessioni per garantire che il software client sia resiliente agli errori delle sessioni.

Se riscontri questa eccezione, ti consigliamo di acquisire una nuova sessione e ritentare la transazione. Si consiglia inoltre di utilizzare la versione più recente del QLDB driver, che gestisce il pool di sessioni e il relativo stato per conto dell'applicazione.

InvalidSessionException

Messaggio: sessione inesistente

Il client ha provato a effettuare una transazione QLDB utilizzando una sessione che non esiste. Supponendo che il client stia utilizzando una sessione che esisteva in precedenza, la sessione potrebbe non esistere più a causa di uno dei seguenti motivi:

  • Se una sessione è coinvolta in un errore interno del server (ovvero un errore con codice di HTTP risposta 500), è QLDB possibile scegliere di ignorare completamente la sessione, anziché consentire al cliente di effettuare transazioni con una sessione di stato incerto. Quindi, qualsiasi tentativo di riprovare quella sessione fallisce con questo errore.

  • Le sessioni scadute vengono infine dimenticate da. QLDB Quindi, qualsiasi tentativo di continuare a utilizzare la sessione genera questo errore, anziché quello inizialeInvalidSessionException.

Se riscontri questa eccezione, ti consigliamo di acquisire una nuova sessione e riprovare la transazione. Si consiglia inoltre di utilizzare la versione più recente del QLDB driver, che gestisce il pool di sessioni e il relativo stato per conto dell'applicazione.

RateExceededException

Messaggio: la velocità è stata superata

QLDBha limitato un client in base all'identità del chiamante. QLDBimpone la limitazione per regione e per account utilizzando un algoritmo di throttling del token bucket. QLDBlo fa per migliorare le prestazioni del servizio e garantire un utilizzo equo per tutti i clienti. QLDB Ad esempio, il tentativo di acquisire un numero elevato di sessioni simultanee utilizzando l'StartSessionRequestoperazione potrebbe comportare un rallentamento.

Per mantenere l'integrità dell'applicazione e mitigare ulteriori limitazioni, puoi riprovare questa eccezione utilizzando Exponential Backoff e Jitter. Il concetto di backoff esponenziale consiste nell'utilizzare tempi di attesa progressivamente più lunghi tra un tentativo e l'altro per risposte di errore consecutive. Si consiglia di utilizzare la versione più recente del driver. QLDB Il driver ha una politica di riprova predefinita che utilizza il backoff e il jitter esponenziali per riprovare automaticamente eccezioni come questa.

La versione più recente del QLDB driver può essere utile anche se l'applicazione viene costantemente limitata per le chiamate. QLDB StartSessionRequest Il driver gestisce un pool di sessioni che vengono riutilizzate tra le transazioni, il che può aiutare a ridurre il numero di StartSessionRequest chiamate effettuate dall'applicazione. Per richiedere un aumento dei limiti di API limitazione, contatta il Centro.AWS Support

LimitExceededException

Messaggio: è stato superato il limite di sessione

Un registro ha superato la quota (nota anche come limite) sul numero di sessioni attive. Questa quota è definita in. Quote e limiti in Amazon QLDB Il conteggio delle sessioni attive di un libro mastro alla fine è costante e i libri contabili che si avvicinano costantemente alla quota potrebbero periodicamente vedere questa eccezione.

Per mantenere l'integrità dell'applicazione, ti consigliamo di riprovare questa eccezione. Per evitare questa eccezione, assicurati di non aver configurato più di 1.500 sessioni simultanee da utilizzare per un singolo registro su tutti i client. Ad esempio, puoi utilizzare il maxConcurrentTransactionsmetodo del QLDBdriver Amazon per Java per configurare il numero massimo di sessioni disponibili in un'istanza di driver.

QldbClientException

Messaggio: un risultato in streaming è valido solo quando la transazione principale è aperta

La transazione è chiusa e non può essere utilizzata per recuperare i risultati da. QLDB Una transazione si chiude quando viene confermata o annullata.

Questa eccezione si verifica quando il client lavora direttamente con l'Transactionoggetto e sta cercando di recuperare i risultati QLDB dopo aver commesso o annullato una transazione. Per mitigare questo problema, il cliente deve leggere i dati prima di chiudere la transazione.

Esportazione dei dati del diario

Questa sezione elenca le eccezioni comuni che QLDB possono essere restituite quando si esportano i dati del journal da un registro in un bucket Amazon S3. Per ulteriori informazioni sull'utilizzo di questa caratteristica, consulta Esportazione dei dati del diario da Amazon QLDB.

Ogni eccezione include il messaggio di errore specifico, seguito da una breve descrizione e suggerimenti per possibili soluzioni.

AccessDeniedException

Messaggio: Utente: userARN non è autorizzato a eseguire: iam: PassRole on resource: roleARN

Non hai i permessi per trasferire un IAM ruolo al QLDB servizio. QLDBrichiede un ruolo per tutte le richieste di esportazione delle riviste e devi disporre delle autorizzazioni a cui passare questo ruolo. QLDB Il ruolo QLDB fornisce autorizzazioni di scrittura nel bucket Amazon S3 specificato.

Verifica di definire una IAM politica che conceda l'autorizzazione a eseguire l'PassRoleAPIoperazione sulla risorsa di IAM ruolo specificata per il QLDB servizio (). qldb.amazonaws.com Per un esempio di policy, consulta Esempi di policy basate sull'identità per Amazon QLDB.

IllegalArgumentException

Messaggio: si è QLDB verificato un errore durante la convalida della configurazione S3: errorCode errorMessage

Una possibile causa di questo errore è che il bucket Amazon S3 fornito non esiste in Amazon S3. Oppure, QLDB non dispone di autorizzazioni sufficienti per scrivere oggetti nel bucket Amazon S3 specificato.

Verifica che il nome del bucket S3 fornito nella richiesta di lavoro di esportazione sia corretto. Per ulteriori informazioni sulla denominazione dei bucket, consulta Restrizioni e limitazioni dei bucket nella Amazon Simple Storage Service User Guide.

Inoltre, verifica di definire una policy per il bucket specificato che conceda PutObject e PutObjectAcl autorizzi il servizio (). QLDB qldb.amazonaws.com Per ulteriori informazioni, consulta Autorizzazioni di esportazione.

IllegalArgumentException

Messaggio: risposta inaspettata da Amazon S3 durante la convalida della configurazione S3. Risposta da S3: errorCode errorMessage

Il tentativo di scrivere i dati di esportazione del journal nel bucket S3 fornito non è riuscito con la risposta di errore di Amazon S3 fornita. Per ulteriori informazioni sulle possibili cause, consulta la sezione Risoluzione dei problemi di Amazon S3 nella Guida per l'utente di Amazon Simple Storage Service.

IllegalArgumentException

Messaggio: il prefisso del bucket Amazon S3 non deve superare i 128 caratteri

Il prefisso fornito nella richiesta di esportazione del journal contiene più di 128 caratteri.

IllegalArgumentException

Messaggio: la data di inizio non deve essere successiva alla data di fine

Entrambi InclusiveStartTime ExclusiveEndTime devono essere nel formato di data e ora ISO8601 e nel formato Coordinated Universal Time (UTC).

IllegalArgumentException

Messaggio: la data di fine non può essere futura

Entrambi InclusiveStartTime e ExclusiveEndTime devono essere nel formato ISO 8601 di data e ora e inUTC.

IllegalArgumentException

Messaggio: l'impostazione di crittografia degli oggetti (S3EncryptionConfiguration) fornita non è compatibile con una chiave AWS Key Management Service (AWS KMS)

Hai KMSKeyArn fornito una ObjectEncryptionType delle due opzioni NO_ENCRYPTION oSSE_S3. È possibile fornire a un cliente gestito AWS KMS key solo un tipo di crittografia degli oggetti diSSE_KMS. Per ulteriori informazioni sulle opzioni di crittografia lato server in Amazon S3, consulta Protezione dei dati utilizzando la crittografia lato server nella Amazon S3 Developer Guide.

LimitExceededException

Messaggio: è stato superato il limite di 2 job di esportazione di Journal eseguiti contemporaneamente

QLDBimpone un limite predefinito di due processi di esportazione di giornali simultanei.

Streaming dei dati del diario

Questa sezione elenca le eccezioni comuni che QLDB possono essere restituite quando si trasmettono i dati del journal da un libro mastro ad Amazon Kinesis Data Streams. Per ulteriori informazioni sull'utilizzo di questa caratteristica, consulta Streaming dei dati del diario da Amazon QLDB.

Ogni eccezione include il messaggio di errore specifico, seguito da una breve descrizione e suggerimenti per possibili soluzioni.

AccessDeniedException

Messaggio: Utente: userARN non è autorizzato a eseguire: iam: PassRole on resource: roleARN

Non hai i permessi per trasferire un IAM ruolo al QLDB servizio. QLDBrichiede un ruolo per tutte le richieste di stream del diario e devi disporre delle autorizzazioni a cui passare questo ruolo. QLDB Il ruolo QLDB fornisce autorizzazioni di scrittura nella risorsa Amazon Kinesis Data Streams specificata.

Verifica di definire una IAM politica che conceda l'autorizzazione a eseguire l'PassRoleAPIoperazione sulla risorsa di IAM ruolo specificata per il QLDB servizio (). qldb.amazonaws.com Per un esempio di policy, consulta Esempi di policy basate sull'identità per Amazon QLDB.

IllegalArgumentException

Messaggio: si è QLDB verificato un errore durante la convalida di Kinesis Data Streams: Response di Kinesis: errorCode errorMessage

Una possibile causa di questo errore è che la risorsa Kinesis Data Streams fornita non esiste. Oppure, QLDB non dispone di autorizzazioni sufficienti per scrivere record di dati nel flusso di dati Kinesis specificato.

Verifica che il flusso di dati Kinesis fornito nella richiesta di streaming sia corretto. Per ulteriori informazioni, consulta Creazione e aggiornamento di flussi di dati nella Amazon Kinesis Data Streams Developer Guide.

Inoltre, verifica di aver definito una policy per il flusso di dati Kinesis specificato che conceda al QLDB service (qldb.amazonaws.com) le autorizzazioni per le seguenti azioni. Per ulteriori informazioni, consulta Autorizzazioni di streaming.

  • kinesis:PutRecord

  • kinesis:PutRecords

  • kinesis:DescribeStream

  • kinesis:ListShards

IllegalArgumentException

Messaggio: risposta inaspettata da Kinesis Data Streams durante la convalida della configurazione Kinesis. Risposta di Kinesis: errorCode errorMessage

Il tentativo di scrivere record di dati nel flusso di dati Kinesis fornito non è riuscito con la risposta di errore Kinesis fornita. Per ulteriori informazioni sulle possibili cause, consulta la sezione Risoluzione dei problemi dei produttori di Amazon Kinesis Data Streams nella Amazon Kinesis Data Streams Developer Guide.

IllegalArgumentException

Messaggio: la data di inizio non deve essere successiva alla data di fine.

Entrambi InclusiveStartTime ExclusiveEndTime devono essere nel formato di data e ora ISO8601 e nel formato Coordinated Universal Time (UTC).

IllegalArgumentException

Messaggio: la data di inizio non può essere futura.

Entrambi InclusiveStartTime i formati ExclusiveEndTime devono essere in formato ISO 8601 data e ora e inUTC.

LimitExceededException

Messaggio: superato il limite di 5 stream Journal in esecuzione simultanea su Kinesis Data Streams

QLDBimpone un limite predefinito di cinque flussi di journal simultanei.

Verifica dei dati del diario

Questa sezione elenca le eccezioni più comuni che QLDB possono essere restituite quando si verificano i dati delle registrazioni in un libro mastro. Per ulteriori informazioni sull'utilizzo di questa caratteristica, consulta Verifica dei dati in Amazon QLDB.

Ogni eccezione include il messaggio di errore specifico, seguito dalle API operazioni che possono generarlo, una breve descrizione e suggerimenti per possibili soluzioni.

IllegalArgumentException

Messaggio: il valore Ion fornito non è valido e non può essere analizzato.

APIoperazioni: GetDigest, GetBlock, GetRevision

Assicurati di fornire un valore Amazon Ion valido prima di ritentare la richiesta.

IllegalArgumentException

Messaggio: l'indirizzo di blocco fornito non è valido.

APIoperazioni: GetDigest, GetBlock, GetRevision

Assicurati di fornire un indirizzo di blocco valido prima di riprovare la richiesta. Un indirizzo di blocco è una struttura Amazon Ion con due campi: strandId esequenceNo.

Ad esempio: {strandId:"BlFTjlSXze9BIh1KOszcE3",sequenceNo:14}

IllegalArgumentException

Messaggio: il numero progressivo dell'indirizzo digest tip fornito non corrisponde all'ultimo record registrato del filone.

APIoperazioni: GetDigest, GetBlock, GetRevision

L'indirizzo digest tip fornito deve avere un numero di sequenza inferiore o uguale al numero di sequenza dell'ultimo record assegnato alla sezione del diario. Prima di riprovare la richiesta, assicurati di fornire un indirizzo digest tip con un numero di sequenza valido.

IllegalArgumentException

Messaggio: lo Strand ID dell'indirizzo di blocco fornito non è valido.

APIoperazioni: GetDigest, GetBlock, GetRevision

L'indirizzo di blocco fornito deve avere un ID di filamento che corrisponda all'ID di strand del diario. Prima di riprovare la richiesta, assicurati di fornire un indirizzo di blocco con un Strand ID valido.

IllegalArgumentException

Messaggio: il numero di sequenza dell'indirizzo di blocco fornito non corrisponde all'ultimo record registrato del filamento.

APIoperazioni: GetBlock, GetRevision

L'indirizzo di blocco fornito deve avere un numero di sequenza inferiore o uguale al numero di sequenza dell'ultimo record salvato del filamento. Prima di riprovare la richiesta, assicurati di fornire un indirizzo di blocco con un numero di sequenza valido.

IllegalArgumentException

Messaggio: lo Strand ID dell'indirizzo di blocco fornito deve corrispondere allo Strand ID dell'indirizzo digest tip fornito.

APIoperazioni: GetBlock, GetRevision

È possibile verificare la revisione o il blocco di un documento solo se esiste nella stessa sezione del diario del digest fornito.

IllegalArgumentException

Messaggio: il numero di sequenza dell'indirizzo di blocco fornito non deve essere maggiore del numero di sequenza dell'indirizzo digest tip fornito.

APIoperazioni: GetBlock, GetRevision

Puoi verificare la revisione o il blocco di un documento solo se è incluso nel riassunto che fornisci. Ciò significa che è stato inserito nel diario prima dell'indirizzo del riepilogo.

IllegalArgumentException

Messaggio: l'ID del documento fornito non è stato trovato nel blocco all'indirizzo di blocco specificato.

APIoperazione: GetRevision

L'ID del documento fornito deve esistere nell'indirizzo di blocco fornito. Prima di riprovare la richiesta, assicurati che questi due parametri siano coerenti.