DynamoDB Stream: il ARN fornito non è valido
TL;DR — Una chiamata Streams API (DescribeStream, GetShardIterator, GetRecords) ha ottenuto uno stream ARN che non è un descrittore di flusso corrente e ben formato, di solito un segnaposto /stream/latest, una tabella ARN per errore o un ARN obsoleto/troncato. Recupera il vero ARN da "LatestStreamArn" di DescribeTable e passalo parola per parola.
Cosa significa
ValidationException: The ARN provided is invalidUn DynamoDB stream ARN ha una forma rigorosa:
arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291Il finale /stream/<ISO-8601 timestamp> è un descrittore di flusso specifico, non un nome simbolico. L'endpoint Streams rifiuta tutto ciò che non viene analizzato come flusso esistente valido ARN con "Il ARN fornito non è valido".
Perché succede
- Un segnaposto
/stream/latest(o simile): alcuni strumenti ed emulatori locali lo accettano, ma il vero DynamoDB richiede il descrittore concreto con timestamp. - Passare la tabella ARN (
.../table/TestTable) dove era previsto uno stream ARN. - A stantio ARN — I flussi sono stati disabilitati e riabilitati, quindi il flusso corrente della tabella ha un nuovo descrittore; il vecchio flusso rimane leggibile solo per 24 ore dopo essere stato disabilitato, poi i suoi record scadono.
- Un ARN costruito a mano o troncato: regione sbagliata, account sbagliato, segmento
/stream/...mancante o spazio bianco/riga in più. - Mancata corrispondenza della regione: il client Streams è configurato per una regione diversa rispetto alle codifiche ARN.
Come risolverlo
- Ottieni il ARN dalla fonte della verità. Chiama
DescribeTablee leggiTable.LatestStreamArn; usa quella stringa esatta. - Non sintetizzare mai ARN a mano o utilizzare
/stream/latest— il segmento timestamp è assegnato da DynamoDB e non può essere indovinato. - Utilizzare l'endpoint DynamoDB Streams, non l'endpoint principale DynamoDB, per
DescribeStream/GetShardIterator/GetRecords. - Abbina la regione del cliente alla regione nel ARN.
- Recupera nuovamente dopo qualsiasi attivazione/disattivazione dei flussi: un ciclo di disattivazione/attivazione crea un flusso nuovo di zecca con un descrittore diverso, quindi il precedente ARN non punta più al flusso live.
- Taglia gli spazi bianchi durante la copia. Un ritorno a capo finale su un ARN altrimenti valido continua a fallire la convalida.
Individualo in DynoTable
DynoTable mostra LatestStreamArn di ogni tabella nel pannello dei metadati della tabella: copialo parola per parola invece di creare manualmente i segnaposto /stream/latest. Apri la tabella con ⌘K ed espandi i dettagli Stream prima di collegare un consumatore Lambda o KCL.
Utilizza il Query Builder per confermare che la tabella è raggiungibile con lo stesso profilo proprietario dello stream. Cambia regione con ⌘P; Verifica connessione in Impostazioni → I profili devono corrispondere alla regione di ARN. Consulta Connetti a AWS e Installa. Non creare mai manualmente il suffisso /stream/<timestamp>: copia ogni volta LatestStreamArn da DescribeTable. Una tabella ARN (.../table/Name) non è un flusso ARN e attiva lo stesso errore di convalida.
Fonti
- Modifica l'acquisizione dei dati per DynamoDB Streams (verificato il 13-07-2026)
- GetShardIterator - Riferimento Amazon DynamoDB Streams API (verificato il 13-07-2026)
Errori correlati
- Impossibile accedere al flusso: il flusso non è abilitato - Il flusso è disattivato o il ARN punta a un flusso scomparso.
- ValidationException: i valori dei parametri non erano validi
- Impara: DynamoDB Streams
Riferimenti
- Modifica dell'acquisizione dati per DynamoDB Streams - Guida per sviluppatori di Amazon DynamoDB
- GetShardIterator — Riferimento Amazon DynamoDB Streams API
- DescribeStream — Riferimento Amazon DynamoDB Streams API
- DescribeTable - Riferimento Amazon DynamoDB API
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale AWS collegata sopra.