Time to Live (TTL) 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) aktivieren

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

  1. Melden Sie sich bei der DynamoDB-Konsole an AWS Management Console und öffnen Sie sie 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 Turn on, um TTL zu aktivieren.

  4. Wenn Sie TTL für eine Tabelle aktivieren, müssen Sie bei DynamoDB einen bestimmten Attributnamen angeben, nach dem der Service sucht, wenn bestimmt wird, ob der Ablauf eines Elements veranlasst werden soll. Beim Namen des TTL-Attributs (siehe unten) 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 TTL deaktivieren und es dann in Zukunft mit dem neuen Attribut wieder aktivieren. TTL verarbeitet Löschungen etwa 30 Minuten lang weiter, sobald es deaktiviert ist. TTL muss für wiederhergestellte Tabellen neu konfiguriert werden.

  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 Beispielliste mit Elementen und es wird bestätigt, dass es Elemente gibt, die den TTL-Attributnamen zusammen mit der Ablaufzeit enthalten.

Nachdem TTL aktiviert wurde, wird das TTL-Attribut als TTL gekennzeichnet, wenn 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 TTL mithilfe des Vorgangs mit Code aktivieren. UpdateTimeToLive

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 überprüfen, ob TTL aktiviert ist, indem Sie den DescribeTimeToLiveVorgang verwenden, der den TTL-Status in einer Tabelle beschreibt. Der TimeToLive Status ist entweder oderENABLED. DISABLED

# 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 TTL mit Code aktivieren, 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 TTL in der TTLExample-Tabelle.

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. Beschreiben Sie TTL in der TTLExample-Tabelle.

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. Fügen Sie der TTLExample-Tabelle mit dem Time-to-Live-Attributsatz ein Element mit der BASH-Shell und AWS CLI hinzu:

    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)

  1. Aktivieren Sie TTL in der TTLExample-Tabelle.

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. Beschreiben Sie TTL in der TTLExample-Tabelle.

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. Fügen Sie der TTLExample-Tabelle mit dem Time-to-Live-Attributsatz ein Element mit der BASH-Shell und AWS CLI hinzu:

    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)