Abilita time to live (TTL) in DynamoDB - Amazon DynamoDB

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à.

Abilita time to live (TTL) in DynamoDB

Nota

Per facilitare il debug e la verifica del corretto funzionamento della TTL funzionalità, i valori forniti per l'elemento TTL vengono registrati in testo semplice nei log di diagnostica di DynamoDB.

Puoi abilitare TTL nella console Amazon DynamoDB, AWS Command Line Interface il AWS CLI() o utilizzare Amazon DynamoDB Reference con uno qualsiasi dei API presunti. AWS SDKs L'attivazione richiede circa un'ora su tutte le partizioni. TTL

  1. Accedi AWS Management Console e apri la console DynamoDB all'indirizzo. https://console.aws.amazon.com/dynamodb/

  2. Scegli Tables (Tabelle) e quindi seleziona la tabella da modificare.

  3. Nella scheda Impostazioni aggiuntive, nella sezione Time to Live (TTL), scegli Attiva per abilitare. TTL

  4. Quando si abilita TTL su una tabella, DynamoDB richiede l'identificazione di un nome di attributo specifico che il servizio cercherà per determinare se un articolo è idoneo alla scadenza. Il nome dell'TTLattributo, mostrato di seguito, fa distinzione tra maiuscole e minuscole e deve corrispondere all'attributo definito nelle operazioni di lettura e scrittura. In caso di mancata corrispondenza, gli articoli scaduti non verranno eliminati. Per rinominare l'TTLattributo è necessario disattivarlo TTL e riattivarlo con il nuovo attributo in futuro. TTLcontinuerà a elaborare le eliminazioni per circa 30 minuti una volta disabilitato. TTLdeve essere riconfigurato sulle tabelle ripristinate.

    Nome TTL dell'attributo con distinzione tra maiuscole e minuscole utilizzato da DynamoDB per determinare l'idoneità di un articolo alla scadenza.
  5. (Facoltativo) È possibile eseguire un test simulando la data e l'ora della scadenza e abbinando alcuni elementi. Questo fornisce un elenco di esempio di articoli e conferma che esistono articoli contenenti il nome dell'TTLattributo fornito insieme alla data di scadenza.

Una volta TTL abilitato, l'TTLattributo viene contrassegnato TTLquando si visualizzano gli elementi sulla console DynamoDB. Puoi visualizzare la data e l'ora di scadenza di un item passando il puntatore del mouse sull'attributo.

Python

È possibile abilitare TTL con codice, utilizzando l'UpdateTimeToLiveoperazione.

import boto3 def enable_ttl(table_name, ttl_attribute_name): """ Enables TTL on DynamoDB table for a given attribute name on success, returns a status code of 200 on error, throws an exception :param table_name: Name of the DynamoDB table :param ttl_attribute_name: The name of the TTL attribute being provided to the table. """ try: dynamodb = boto3.client('dynamodb') # Enable TTL on an existing DynamoDB table response = dynamodb.update_time_to_live( TableName=table_name, TimeToLiveSpecification={ 'Enabled': True, 'AttributeName': ttl_attribute_name } ) # In the returned response, check for a successful status code. if response['ResponseMetadata']['HTTPStatusCode'] == 200: print("TTL has been enabled successfully.") else: print(f"Failed to enable TTL, status code {response['ResponseMetadata']['HTTPStatusCode']}") except Exception as ex: print("Couldn't enable TTL in table %s. Here's why: %s" % (table_name, ex)) raise # your values enable_ttl('your-table-name', 'expirationDate')

È possibile confermare che TTL sia abilitato utilizzando l'DescribeTimeToLiveoperazione, che descrive lo TTL stato in una tabella. Lo TimeToLive stato è ENABLED oDISABLED.

# create a DynamoDB client dynamodb = boto3.client('dynamodb') # set the table name table_name = 'YourTable' # describe TTL response = dynamodb.describe_time_to_live(TableName=table_name)
JavaScript

È possibile abilitare TTL con codice, utilizzando l'UpdateTimeToLiveCommandoperazione.

import { DynamoDBClient, UpdateTimeToLiveCommand } from "@aws-sdk/client-dynamodb"; const enableTTL = async (tableName, ttlAttribute) => { const client = new DynamoDBClient({}); const params = { TableName: tableName, TimeToLiveSpecification: { Enabled: true, AttributeName: ttlAttribute } }; try { const response = await client.send(new UpdateTimeToLiveCommand(params)); if (response.$metadata.httpStatusCode === 200) { console.log(`TTL enabled successfully for table ${tableName}, using attribute name ${ttlAttribute}.`); } else { console.log(`Failed to enable TTL for table ${tableName}, response object: ${response}`); } return response; } catch (e) { console.error(`Error enabling TTL: ${e}`); throw e; } }; // call with your own values enableTTL('ExampleTable', 'exampleTtlAttribute');
  1. Abilita TTL sul TTLExample tavolo.

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. Descrivi TTL sul TTLExample tavolo.

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. Aggiungi un elemento alla TTLExample tabella con l'attributo Time to Live impostato utilizzando la BASH shell e il AWS CLI.

    EXP=`date -d '+5 days' +%s` aws dynamodb put-item --table-name "TTLExample" --item '{"id": {"N": "1"}, "ttl": {"N": "'$EXP'"}}'

Questo esempio inizia con la data corrente e aggiunge 5 giorni per creare un periodo di scadenza. Il periodo di scadenza viene quindi convertito nel formato temporale epoch Unix per aggiungere infine un item nella tabella TTLExample.

Nota

Un modo per impostare i valori di scadenza per il Time to Live (TTL) consiste nel calcolare il numero di secondi da aggiungere al periodo di scadenza. Ad esempio, 5 giorni sono 432.000 secondi. È tuttavia in genere preferibile scegliere come punto di partenza una data.

Ottenere l'ora corrente in formato epoch Unix è piuttosto semplice, come negli esempi seguenti.

  • Terminale Linux: date +%s

  • Python: import time; int(time.time())

  • Java: System.currentTimeMillis() / 1000L

  • JavaScript: Math.floor(Date.now() / 1000)

AWSTemplateFormatVersion: "2010-09-09" Resources: TTLExampleTable: Type: AWS::DynamoDB::Table Description: "A DynamoDB table with TTL Specification enabled" Properties: AttributeDefinitions: - AttributeName: "Album" AttributeType: "S" - AttributeName: "Artist" AttributeType: "S" KeySchema: - AttributeName: "Album" KeyType: "HASH" - AttributeName: "Artist" KeyType: "RANGE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" TimeToLiveSpecification: AttributeName: "TTLExampleAttribute" Enabled: true

Ulteriori dettagli sull'utilizzo TTL all'interno dei AWS CloudFormation modelli sono disponibili qui.