DynamoDB TTLを試す



DynamoDBのTTL機能を使うと、項目に期限を設定して、自動削除することができます。
※削除は期限切れになってから48時間以内に実行されます。
import boto3
import time
import uuid
from datetime import datetime, timedelta

try:
    client = boto3.client('dynamodb')
    table_name = 'my_table'

    # テーブル作成
    result = client.create_table(
        AttributeDefinitions = [
            {
                'AttributeName': 'id',
                'AttributeType': 'S'
            },
        ],
        TableName = table_name,
        KeySchema = [
            {
                'AttributeName': 'id',
                'KeyType': 'HASH'
            },
        ],
        ProvisionedThroughput = {
            'ReadCapacityUnits': 3,
            'WriteCapacityUnits': 3
        }
    )
    print('create_table')

    # テーブルができるまでスリープ
    time.sleep(10)

    # TTL有効化
    result = client.update_time_to_live(
        TableName = table_name,
        TimeToLiveSpecification={
            'Enabled': True,
            'AttributeName': 'ttl'
        }
    )

    print('update_time_to_live')
except Exception as e:
    print(e)

try:
    # データ追加
    id = str(uuid.uuid4())

    datetime_now = datetime.now()
    ttl = datetime_now + timedelta(minutes=1) # 1分後
    
    result = client.put_item(
        TableName = table_name,
        Item = {
            'id': {'S': id},
            'created_at': {'S': datetime_now.strftime("%Y/%m/%d %H:%M:%S")},
            'unixtime': {'N': str(int(datetime_now.timestamp()))},
            'ttl': {'N': str(int(ttl.timestamp()))},
        }
    )

    print('put_item')
    
except Exception as e:
    print(e)
Pythonスクリプトでテーブル作成、TTLの設定、項目の追加を行います。
しばらくすると項目が削除されることが確認できます。
TTLに設定した属性はマウスオーバーすると読みやすい形式に変換して表示してくれます。