有効期限 (TTL) の有効化 - Amazon DynamoDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

有効期限 (TTL) の有効化

TTl は、Amazon DynamoDB コンソール、 AWS Command Line Interface (AWS CLI)、または Amazon DynamoDB API リファレンスで、想定されているAWSSDKsで有効にすることができます。すべてのパーティションで TTL が有効になるまでに約 1 時間かかります。

  1. AWS Management Console にサインインして DynamoDB コンソール (https://console.aws.amazon.com/dynamodb/) を開きます。

  2. [テーブル] を選択し、変更するテーブルを選択します。

  3. 追加設定 タブの 有効期限 (TTL) セクションで、 オン を選択して TTL を有効にします。

  4. テーブルで TTL を有効にする場合、DynamoDB では、項目が失効可能かどうかを判断するときにサービスが検索する、特定の属性名を識別する必要があります。以下に示す TTL 属性名は大文字と小文字が区別され、読み取りおよび書き込みオペレーションで定義された属性と一致する必要があります。一致しないと、期限切れの項目は削除されなくなります。TTL 属性の名前を変更するには、TTL を無効にしてから、新しい属性で再度有効にする必要があります。TTL は、無効化されてから約 30 分間削除を処理し続けます。TTL は、復元されたテーブルで再設定する必要があります。

  5. (オプション) 有効期限の日時をシミュレートし、いくつかの項目を照合することでテストを実行できます。これにより、項目のサンプルリストが提供され、提供された TTL 属性名と有効期限を含む項目があることを確認します。

TTL を有効にすると、DynamoDB コンソールで項目を表示すると TTL 属性に TTL のマークが付けられます。属性の上にポインターを合わせると、項目が期限切れになる日時を表示できます。

Python

UpdateTimeToLive オペレーションを使用して、コードで TTL を有効にできます。

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

TTL が有効になっていることを確認するには、テーブルの TTL ステータスを記述する DescribeTimeToLiveオペレーションを使用します。TimeToLive ステータスは ENABLEDまたは のいずれかです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

UpdateTimeToLiveCommand オペレーションを使用して、コードで TTL を有効にできます。

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. TTLExample テーブルで TTL を有効にします。

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. TTLExample テーブルで TTL を無効にします。

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. BASH シェルおよび AWS CLI を使用して 有効期限 (TTL) 属性が設定された項目を TTLExample テーブルに追加するには:

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

この例では、現在の日付から開始し、有効期限を作成するために 5 日を追加します。次に、有効期限をエポック時間形式に変換してから、最後に項目を「TTLExample」テーブルに追加します。

注記

有効期限 (TTL) の有効期限切れの値を設定する 1 つの方法は、有効期限に追加する秒数を計算することです。たとえば、5 日間は 432,000 秒です。ただし、多くの場合は最初に日付で開始し、そこから作業を開始することをお勧めします。

次の例のように、現在の時間をエポック時間形式で取得するのは非常に簡単です。

  • Linux ターミナル: date +%s

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

  • Java: System.currentTimeMillis() / 1000L

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

  1. TTLExample テーブルで TTL を有効にします。

    aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
  2. TTLExample テーブルで TTL を無効にします。

    aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
  3. BASH シェルおよび AWS CLI を使用して 有効期限 (TTL) 属性が設定された項目を TTLExample テーブルに追加するには:

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

この例では、現在の日付から開始し、有効期限を作成するために 5 日を追加します。次に、有効期限をエポック時間形式に変換してから、最後に項目を「TTLExample」テーブルに追加します。

注記

有効期限 (TTL) の有効期限切れの値を設定する 1 つの方法は、有効期限に追加する秒数を計算することです。たとえば、5 日間は 432,000 秒です。ただし、多くの場合は最初に日付で開始し、そこから作業を開始することをお勧めします。

次の例のように、現在の時間をエポック時間形式で取得するのは非常に簡単です。

  • Linux ターミナル: date +%s

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

  • Java: System.currentTimeMillis() / 1000L

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