Habilitando o time to live (TTL) - Amazon DynamoDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Habilitando o time to live (TTL)

O TTl pode ser ativado no console do Amazon DynamoDBAWS Command Line Interface, no () ou usando AWS CLI o Amazon DynamoDB API Reference com qualquer um dos supostos SDKs. AWS Demora aproximadamente uma hora para que o TTL seja ativado em todas as partições.

  1. Faça login no AWS Management Console e abra o console do DynamoDB em https://console.aws.amazon.com/dynamodb/.

  2. Escolha Tables (Tabelas) e selecione a tabela que você deseja modificar.

  3. Na guia Configurações adicionais, na seção Time to Live (TTL), escolha Ativar para ativar o TTL.

  4. Ao habilitar o TTL em uma tabela, o DynamoDB exige identificar um nome de atributo específico que o serviço procurará ao determinar se um item está qualificado para expiração. O nome do atributo TTL, mostrado abaixo, diferencia maiúsculas de minúsculas e deve corresponder ao atributo definido em suas operações de leitura e gravação. Uma incompatibilidade fará com que os itens expirados não sejam excluídos. Renomear o atributo TTL exige que você desative o TTL e depois o reative com o novo atributo daqui para frente. O TTL continuará processando as exclusões por aproximadamente 30 minutos depois de desativado. O TTL deve ser reconfigurado em tabelas restauradas.

  5. (Opcional) Você pode realizar um teste simulando a data e a hora da expiração e combinando alguns itens. Isso fornece uma lista de exemplos de itens e confirma que há itens contendo o nome do atributo TTL fornecido junto com o prazo de validade.

Depois que o TTL é ativado, o atributo TTL é marcado como TTL quando você visualiza itens no console do DynamoDB. Você pode visualizar a data e a hora em que um item expira posicionando o mouse sobre o atributo.

Python

Você pode ativar o TTL com código, usando a UpdateTimeToLiveoperação.

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')

Você pode confirmar se o TTL está ativado usando a DescribeTimeToLiveoperação, que descreve o status do TTL em uma tabela. O TimeToLive status é ENABLED ouDISABLED.

# 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

Você pode ativar o TTL com código, usando a UpdateTimeToLiveCommandoperação.

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. Habilite o TTL na tabela TTLExample.

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. Descreva o TTL na tabela TTLExample.

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. Para adicionar um item à tabela TTLExample com o conjunto de atributos de vida útil usando o shell BASH e a AWS CLI.

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

Este exemplo inicia na data atual e adiciona 5 dias a ela para criar uma data de expiração. Depois, ele converte a data de expiração em formato de hora epoch para finalmente adicionar um item à tabela "TTLExample".

nota

Uma forma de definir os valores de expiração para a vida útil é calcular o número de segundos para adicionar o tempo de expiração. Por exemplo, 5 dias é igual a 432.000 segundos. No entanto, muitas vezes é preferível começar com uma data e trabalhar a partir desse ponto.

É muito simples obter a hora atual no formato de hora epoch, como nos seguintes exemplos.

  • Terminal Linux: date +%s

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

  • Java: System.currentTimeMillis() / 1000L

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

  1. Habilite o TTL na tabela TTLExample.

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. Descreva o TTL na tabela TTLExample.

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. Para adicionar um item à tabela TTLExample com o conjunto de atributos de vida útil usando o shell BASH e a AWS CLI.

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

Este exemplo inicia na data atual e adiciona 5 dias a ela para criar uma data de expiração. Depois, ele converte a data de expiração em formato de hora epoch para finalmente adicionar um item à tabela "TTLExample".

nota

Uma forma de definir os valores de expiração para a vida útil é calcular o número de segundos para adicionar o tempo de expiração. Por exemplo, 5 dias é igual a 432.000 segundos. No entanto, muitas vezes é preferível começar com uma data e trabalhar a partir desse ponto.

É muito simples obter a hora atual no formato de hora epoch, como nos seguintes exemplos.

  • Terminal Linux: date +%s

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

  • Java: System.currentTimeMillis() / 1000L

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