Permettre le temps de vivre (TTL) - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Permettre le temps de vivre (TTL)

Le TTl peut être activé dans la console Amazon DynamoDB, le ()AWS Command Line Interface, ou à l'aide de AWS CLI la référence d'API Amazon DynamoDB avec n'importe lequel des kits SDK supposés. AWS Il faut environ une heure pour que le TTL soit activé sur toutes les partitions.

  1. Connectez-vous à l'AWS Management Console et ouvrez la console DynamoDB à l'adresse https://console.aws.amazon.com/dynamodb/.

  2. Choisissez Tables, puis choisissez la table à modifier.

  3. Dans l'onglet Paramètres supplémentaires, dans la section Durée de vie (TTL), choisissez Activer pour activer le TTL.

  4. Lorsque vous activez TTL sur une table, vous devez identifier un nom d'attribut spécifique que le service DynamoDB recherchera pour déterminer si un élément peut faire l'objet d'une expiration. Le nom de l'attribut TTL, illustré ci-dessous, distingue les majuscules et minuscules et doit correspondre à l'attribut défini dans vos opérations de lecture et d'écriture. En cas de non-concordance, les articles expirés ne seront pas supprimés. Pour renommer l'attribut TTL, vous devez désactiver le TTL, puis le réactiver avec le nouvel attribut à l'avenir. Le TTL continuera à traiter les suppressions pendant environ 30 minutes une fois qu'il sera désactivé. Le TTL doit être reconfiguré sur les tables restaurées.

  5. (Facultatif) Vous pouvez effectuer un test en simulant la date et l'heure de l'expiration et en faisant correspondre quelques éléments. Cela vous fournit un exemple de liste d'éléments et confirme qu'il existe des éléments contenant le nom d'attribut TTL fourni avec le délai d'expiration.

Une fois le TTL activé, l'attribut TTL est marqué TTL lorsque vous affichez des éléments sur la console DynamoDB. Vous pouvez afficher la date et l'heure d'expiration d'un élément en faisant passer votre souris au-dessus de l'attribut.

Python

Vous pouvez activer le TTL avec du code à l'aide de l'UpdateTimeToLiveopération.

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

Vous pouvez confirmer que le TTL est activé à l'aide de l'DescribeTimeToLiveopération, qui décrit l'état du TTL sur une table. Le TimeToLive statut est soit, ENABLED soitDISABLED.

# 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

Vous pouvez activer le TTL avec du code à l'aide de l'UpdateTimeToLiveCommandopération.

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. Active TTL sur la table TTLExample.

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. Décrit TTL sur la table TTLExample.

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. Ajoutez un élément à la table TTLExample avec l'attribut de TTL défini à l'aide du shell BASH et de l'AWS CLI.

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

Cet exemple démarre par la date actuelle à laquelle cinq jours sont ajoutés pour créer une date d'expiration. Il a ensuite converti l'heure d'expiration en heure au format epoch pour ajouter en dernier lieu un élément à la table « TTLExample ».

Note

Pour définir des valeurs d'expiration pour TTL, l'une des méthodes à votre disposition consiste à calculer le nombre de secondes à ajouter à l'heure d'expiration. Par exemple, 5 jours équivalent à 432 000 secondes. Toutefois, il est souvent préférable de commencer par une date et de définir le reste en fonction de celle-ci.

Il est relativement simple d'obtenir l'heure actuelle au format epoch, comme dans l'exemple suivant.

  • Terminal Linux : date +%s

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

  • Java: System.currentTimeMillis() / 1000L

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

  1. Active TTL sur la table TTLExample.

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. Décrit TTL sur la table TTLExample.

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. Ajoutez un élément à la table TTLExample avec l'attribut de TTL défini à l'aide du shell BASH et de l'AWS CLI.

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

Cet exemple démarre par la date actuelle à laquelle cinq jours sont ajoutés pour créer une date d'expiration. Il a ensuite converti l'heure d'expiration en heure au format epoch pour ajouter en dernier lieu un élément à la table « TTLExample ».

Note

Pour définir des valeurs d'expiration pour TTL, l'une des méthodes à votre disposition consiste à calculer le nombre de secondes à ajouter à l'heure d'expiration. Par exemple, 5 jours équivalent à 432 000 secondes. Toutefois, il est souvent préférable de commencer par une date et de définir le reste en fonction de celle-ci.

Il est relativement simple d'obtenir l'heure actuelle au format epoch, comme dans l'exemple suivant.

  • Terminal Linux : date +%s

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

  • Java: System.currentTimeMillis() / 1000L

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