{DynamoDB}DynamoDB の有効期限 (TTL) を使用して項目を有効期限切れにする

項目には、テーブルで TTL が有効になったときに指定された属性が含まれている必要があります。
TTL 属性の値は Number データ型である必要があります。
TTL 属性の値は、Unix エポック時間形式のタイムスタンプ (秒単位) である必要があります。
TTL 属性値は、過去 5 年以内の有効期限を持つタイムスタンプである必要があります。

テーブルの TTL 設定を有効化、無効化、または変更すると、設定が伝播され、
TTL 関連アクションの実行が許可されるまで、約 1 時間かかることがあります。


-- 1. テストテーブル作成
aws dynamodb create-table \
--table-name tab1 \
--attribute-definitions \
AttributeName=col1,AttributeType=N \
--key-schema \
AttributeName=col1,KeyType=HASH \
--billing-mode=PAY_PER_REQUEST

aws dynamodb describe-table --table-name tab1
aws dynamodb list-tables


aws dynamodb put-item --table-name "tab1" --item '{"col1": {"N": "1"}, "col2": {"N": "'`date -d '-3 days' +%s`'"}}'
aws dynamodb put-item --table-name "tab1" --item '{"col1": {"N": "2"}, "col2": {"N": "'`date -d '-2 days' +%s`'"}}'
aws dynamodb put-item --table-name "tab1" --item '{"col1": {"N": "3"}, "col2": {"N": "'`date -d '-1 days' +%s`'"}}'
aws dynamodb put-item --table-name "tab1" --item '{"col1": {"N": "4"}, "col2": {"N": "'`date -d ' 0 days' +%s`'"}}'
aws dynamodb put-item --table-name "tab1" --item '{"col1": {"N": "5"}, "col2": {"N": "'`date -d ' 1 days' +%s`'"}}'
aws dynamodb put-item --table-name "tab1" --item '{"col1": {"N": "6"}, "col2": {"N": "'`date -d ' 2 days' +%s`'"}}'
aws dynamodb put-item --table-name "tab1" --item '{"col1": {"N": "7"}, "col2": {"N": "'`date -d ' 3 days' +%s`'"}}'


-- 2. TTL有効化

aws dynamodb update-time-to-live --table-name tab1 --time-to-live-specification "Enabled=true, AttributeName=col2"

aws dynamodb describe-time-to-live --table-name tab1


-- 3. TTL動作確認

aws dynamodb scan --table-name tab1

約1時間後、col1 1~4のデータが消失

-- 4. クリーンアップ

-- テーブル一覧
aws dynamodb list-tables

-- テーブル削除
aws dynamodb delete-table --table-name tab1