Time to live (TTL) in DynamoDB aktivieren - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Time to live (TTL) in DynamoDB aktivieren

Anmerkung

Um das Debuggen und die Überprüfung des ordnungsgemäßen Funktionierens der TTL Funktion zu unterstützen, TTL werden die für das Element bereitgestellten Werte in Klartext in DynamoDB-Diagnoseprotokollen protokolliert.

Sie können das AWS Command Line Interface (AWS CLI) TTL in der Amazon DynamoDB DynamoDB-Konsole oder mithilfe der Amazon DynamoDB API DynamoDB-Referenz mit einem der angegebenen Optionen aktivieren. AWS SDKs Die Aktivierung TTL auf allen Partitionen dauert ungefähr eine Stunde.

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die DynamoDB-Konsole unter. https://console.aws.amazon.com/dynamodb/

  2. Wählen Sie Tables (Tabellen) und anschließend die Tabelle aus, die Sie ändern möchten.

  3. Wählen Sie auf der Registerkarte Zusätzliche Einstellungen im Abschnitt Time to Live (TTL) die Option Aktivieren aus. TTL

  4. Bei TTL der Aktivierung für eine Tabelle müssen Sie in DynamoDB einen bestimmten Attributnamen angeben, nach dem der Service sucht, um zu ermitteln, ob ein Element ablauffähig ist. Bei dem unten abgebildeten TTL Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden und er muss mit dem in Ihren Lese- und Schreibvorgängen definierten Attribut übereinstimmen. Eine Nichtübereinstimmung führt dazu, dass abgelaufene Artikel nicht gelöscht werden. Um das TTL Attribut umzubenennen, müssen Sie es deaktivieren TTL und anschließend mit dem neuen Attribut wieder aktivieren. TTLverarbeitet Löschungen nach der Deaktivierung noch etwa 30 Minuten lang. TTLmuss für wiederhergestellte Tabellen neu konfiguriert werden.

    TTLAttributname mit Berücksichtigung von Groß- und Kleinschreibung, anhand dessen DynamoDB bestimmt, ob ein Element für ein Ablaufdatum in Frage kommt.
  5. (Optional) Sie können einen Test durchführen, indem Sie Datum und Uhrzeit des Ablaufs simulieren und einige Elemente miteinander vergleichen. Dadurch erhalten Sie eine Musterliste mit Elementen und es wird bestätigt, dass es Elemente gibt, die den angegebenen TTL Attributnamen zusammen mit der Ablaufzeit enthalten.

Nach der Aktivierung TTL wird das TTL Attribut markiert, TTLwenn Sie Elemente auf der DynamoDB-Konsole anzeigen. Sie können den Termin anzeigen, an dem ein Element abläuft, indem Sie mit dem Mauszeiger über das Attribut fahren.

Python

Sie können die Aktivierung TTL mit Code durchführen, indem Sie den UpdateTimeToLiveVorgang verwenden.

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

Sie können anhand des DescribeTimeToLiveVorgangs, der den TTL Status in einer Tabelle beschreibt, überprüfenTTL, ob die Aktivierung aktiviert ist. Der TimeToLive Status ist entweder ENABLED oderDISABLED.

# 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

Sie können die Aktivierung TTL mit Code durchführen, indem Sie die UpdateTimeToLiveCommandOperation verwenden.

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. Aktivieren Sie es TTL auf dem TTLExample Tisch.

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. Beschreiben Sie es TTL auf dem TTLExample Tisch.

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. Fügen Sie der TTLExample Tabelle mithilfe der BASH Shell und der ein Element hinzu, für das das Time to Live-Attribut festgelegt ist AWS CLI.

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

In diesem Beispiel wurde mit dem aktuellen Datum begonnen und es wurden 5 Tage hinzugefügt, um ein Ablaufdatum zu erstellen. Anschließend wird das Ablaufdatum in ein Epoch-Zeitformat umgewandelt, um der Tabelle "TTLExample" ein Element hinzuzufügen.

Anmerkung

Eine Möglichkeit, Ablaufwerte für Time to Live festzulegen, besteht darin, die Anzahl von Sekunden zu berechnen, die dem Ablaufdatum hinzugefügt werden. Beispielsweise sind 5 Tage 432.000 Sekunden. Es ist jedoch häufig besser, mit einem Datum zu beginnen und dieses als Ausgangspunkt zu nehmen.

Es ist relativ einfach, die aktuelle Zeit im Epoch-Zeitformat zu erhalten, wie in folgenden Beispielen veranschaulicht.

  • Linux-Terminal: 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

Weitere Informationen zur Verwendung TTL in Ihren AWS CloudFormation Vorlagen finden Sie hier.