Habilitación del período de vida (TTL) de DynamoDB
nota
Para facilitar la depuración y la verificación del correcto funcionamiento de la característica TTL, los valores proporcionados para el TTL de un elemento se registran en texto no cifrado en los registros de diagnóstico de DynamoDB.
Puede habilitar TTL en la consola de Amazon DynamoDB, la AWS Command Line Interface (AWS CLI) o mediante la referencia de la API de Amazon DynamoDB con cualquiera de los AWS SDK supuestos. La habilitación de TTL en todas las particiones tarda aproximadamente una hora.
Inicie sesión en la AWS Management Console y abra la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/
. -
Elija Tables (Tablas) y, a continuación, seleccione la tabla que desee modificar.
-
En la pestaña Configuración adicional, dentro de la sección Tiempo de vida (TTL), elija Activar.
-
Al habilitar TTL en una tabla, DynamoDB requiere que identifique un nombre de atributo específico que el servicio buscará al determinar si un elemento cumple los requisitos para el vencimiento. El nombre del atributo TTL, que se muestra a continuación, distingue entre mayúsculas y minúsculas y debe coincidir con el atributo definido en las operaciones de lectura y escritura. Si no coinciden, los elementos caducados no se eliminarán. Si se cambia el nombre del atributo TTL, deberá desactivarse el TTL y volverse a activar con el nuevo atributo de ahora en adelante. Una vez desactivado, el TTL seguirá procesando las eliminaciones durante aproximadamente 30 minutos. El TTL debe reconfigurarse en las tablas restauradas.
-
(Opcional) Puede realizar una prueba simulando la fecha y la hora de vencimiento y haciendo coincidir algunos elementos. Al hacer se muestra una lista de elementos de ejemplo donde se confirma que hay elementos que contienen el nombre del atributo TTL junto con la fecha de vencimiento.
Ahora que TTL está activado, el atributo TTL llevará la marca TTL cuando consulte los elementos en la consola de DynamoDB. Para ver la fecha y la hora de vencimiento de un elemento, mantenga el cursor del ratón sobre el atributo.
-
Habilite TTL en la tabla
TTLExample
.aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
-
Describa TTL en la tabla
TTLExample
.aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
-
Añada un elemento a la tabla
TTLExample
con el atributo de período de vida establecido utilizando el shell de BASH y la AWS CLI.EXP=`date -d '+5 days' +%s` aws dynamodb put-item --table-name "TTLExample" --item '{"id": {"N": "1"}, "ttl": {"N": "'$EXP'"}}'
Este ejemplo comienza con la fecha actual y añade cinco días para crear una fecha de vencimiento. A continuación, convierte la fecha de vencimiento al formato de tiempo Unix y, por último, agrega un elemento a la tabla "TTLExample
".
nota
Una forma de establecer valores de vencimiento para período de vida consiste en calcular el número de segundos que se sumarán al momento del vencimiento. Por ejemplo, 5 días son 432 000 segundos. Sin embargo, a menudo es preferible comenzar por una fecha y tomarla como punto de partida.
Es bastante sencillo obtener el tiempo actual en formato de tiempo Unix, como en los siguientes ejemplos.
-
Terminal 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
Puede encontrar aquí más información sobre el uso del TTL en las plantillas de AWS CloudFormation.