DynamoDB supporta il TTL?

Sì. DynamoDB supporta il Time to Live (TTL). Designi un attributo Number che contiene un timestamp di scadenza Unix epoch in secondi; DynamoDB rimuove poi gli Item scaduti in background — tipicamente entro pochi giorni dalla scadenza — senza costi aggiuntivi e senza consumare capacità di scrittura. Gli Item scaduti ma non ancora eliminati possono comunque comparire nelle letture finché non vengono rimossi.

Come abilitarlo

Attiva il TTL per la tabella e indica il nome dell'attributo che contiene la scadenza. Quell'attributo deve essere un Number che memorizza un timestamp Unix epoch in secondi (non millisecondi). Gli Item il cui valore è nel passato diventano idonei all'eliminazione.

Cosa aspettarsi

  • Gratuito — l'eliminazione automatica non consuma unità di capacità di scrittura. Fare la stessa pulizia da solo costa un'unità di scrittura per Item: dieci milioni di Item scaduti da 1 KB sono dieci milioni di unità di scrittura, 6,25 $ in on-demand su us-east-1, più circa 1,64 $ per ogni scan completo su una tabella da 100 GB per trovarli. (Un'eccezione: su una tabella globale, l'eliminazione replicata verso ciascuna altra Regione consuma lì capacità di scrittura replicata.)
  • Non istantaneo — DynamoDB rimuove tipicamente gli Item scaduti entro pochi giorni dalla scadenza.
  • Ancora leggibile — finché non vengono eliminati fisicamente, gli Item scaduti possono comparire in letture, query e scan, quindi filtrali via se l'esattezza conta.

Il modo in cui non scatta mai, in silenzio

DynamoDB non valida l'attributo a cui hai puntato il TTL. Entrambe queste scritture hanno restituito HTTP 200 su una tabella con il TTL abilitato su expiresAt, e nessuno dei due Item scadrà mai:

{"pk": {"S": "sess#1"}, "expiresAt": {"S": "1790812800"}}
{"pk": {"S": "sess#2"}, "expiresAt": {"N": "1790812800000"}}

Il primo memorizza il timestamp come String. AWS è esplicita: "items with a TTL attribute that is not a Number type are ignored by the TTL process", e nulla te lo segnala al momento della scrittura, all'abilitazione o dopo.

Il secondo è quello che capita davvero, perché il tipo è giusto e il valore veniva da Date.now(). 1790812800000 è il 1° ottobre 2026 in millisecondi. Letto come secondi, che è l'unico modo in cui il TTL lo legge, quel timestamp cade nell'anno 58718. L'Item è ben formato, interrogabile, fatturato per lo storage e programmato per scadere tra cinquantaseimila anni.

Nulla nell'API fa emergere nessuno dei due errori, quindi il controllo deve avvenire prima che tu scriva. È per questo che il nostro convertitore TTL tratta qualsiasi valore sopra 1e12 come millisecondi, e ti mostra la data a cui il valore corrisponde.

Usi comuni

Record di sessione, token di verifica e risultati in cache che dovrebbero ripulirsi da soli — i classici casi d'uso del TTL. Abbinalo a DynamoDB Streams per reagire alle eliminazioni.

Approfondisci

Leggi la guida DynamoDB TTL e DynamoDB Streams. Scarica DynoTable per visualizzare e impostare gli attributi TTL.

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra; TTL.html riverificata il 2026-07-28.

Entrambe le scritture qui sopra sono state eseguite il 2026-07-28 su DynamoDB Local 3.3.0 tramite @aws-sdk/client-dynamodb 3.1095.0 e sono state accettate con HTTP 200. I costi di pulizia sono calcolati dalle tariffe on-demand us-east-1 della nostra tabella dei prezzi AWS sincronizzata.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.