はじめに
DynamoDBを使うなら最初に設定しておきたい5つのポイント
上記記事で紹介した「その3」として、TTL(Time To Live) の設定方法を紹介します。
TTLを設定しておくことで、不要になったデータを自動で削除できるため、ストレージコストの削減やデータ管理の負担軽減につながります。
本記事では、AWSコンソールからTTLを設定する方法を紹介します。
TTL(Time To Live)とは?
TTL(Time To Live)は、
指定した時刻を過ぎたアイテムを自動で削除してくれる機能
です。
例えば、次のようなデータでよく利用されます。
- セッション情報
- キャッシュデータ
- 一時ファイルの管理
- 一定期間だけ保存したいログ
TTLを設定すると、期限切れになったデータは自動的に削除されるため、不要なデータを手動で削除する必要がありません。
イメージ
TTLを利用するメリット
TTLを利用するメリットは次のとおりです。
- 不要データを自動削除できる
- ストレージコストを削減できる
- 定期削除用のLambdaやバッチ処理が不要になる
- 運用負荷を軽減できる
TTLを利用する際の注意点
TTLを設定する前に知っておきたいポイントです。
- TTL対象となる属性には**Unixエポック秒(Epoch Time)**を設定する
- 削除はリアルタイムではなく、期限到達後しばらくして実行される
- 削除タイミングは保証されない
- TTLの削除処理自体には追加料金は発生しない
設定手順
① DynamoDBを開く
AWSマネジメントコンソールから
DynamoDB
を開きます。
② 対象テーブルを選択
左メニューの
「テーブル」
をクリックします。
一覧からTTLを設定したいテーブルを選択します。
③ 「設定」を開く
画面上部の
「設定」
をクリックします。
④ Time to Live(TTL)の「オンにする」をクリック
画面を下へスクロールすると、
Time to Live (TTL)
があります。
「オンにする」
をクリックします。
⑤ TTLを有効化する
設定画面で
- TTL属性名
を入力します。
例えば、
expiresAt
という属性名を設定します。
最後に
TTLをオンにする
をクリックします。
これで設定完了です。
TTL属性とは?
TTLでは、
削除日時を保存するための属性を指定します。
例えば、
{
"id": "1001",
"name": "Sho",
"expiresAt": 1767135600
}
この
expiresAt
がTTL属性になります。
値は
Unixエポック秒
で保存する必要があります。
Unixエポック秒とは?
TTLで指定する日時は
2025-12-31 12:00
のような日時ではなく、
1767135600
のような
1970年1月1日からの経過秒数
で指定します。
例えばPythonでは、
import time
expires = int(time.time()) + 86400
とすることで、
24時間後をTTLとして設定できます。
設定後の確認
設定後は、
追加設定画面で
Time to Live
TTLステータス:オン(有効)
となっていれば設定完了です。
よくある質問
Q. TTLになるとすぐ削除されますか?
いいえ。
TTLは即時削除ではありません。
期限を過ぎると、
AWSがバックグラウンドで順次削除します。
そのため、
数時間〜最大48時間程度残る場合があります。
Q. 削除料金はかかりますか?
TTLによる削除処理自体に追加料金は発生しません。
不要データが削除されることで、
ストレージ料金の削減につながります。
Q. TTLは必ず設定した方がいいですか?
次のようなデータでは非常におすすめです。
- セッション管理
- ログ
- キャッシュ
- 一時データ
一方、
永続的に保存したいデータには不要です。
AWS CLIで設定する方法
TTLを有効化する場合は、
aws dynamodb update-time-to-live \
--table-name sample-table \
--time-to-live-specification \
"Enabled=true,AttributeName=expiresAt"
状態を確認する場合は、
aws dynamodb describe-time-to-live \
--table-name sample-table
まとめ
TTLを設定することで、
不要になったデータを自動で削除できるようになります。
定期削除のバッチ処理を作成する必要がなくなるため、
運用負荷の軽減にもつながります。
設定手順のおさらい
- DynamoDBを開く
- テーブルを選択
- 「追加設定」 をクリック
- Time to Live(TTL)→「編集」
- TTLを有効化
- TTL属性名を入力
- 保存して完了
セッション情報やキャッシュなど、有効期限があるデータを扱う場合は、ぜひTTLを活用してみてください。
参考
- AWS公式ドキュメント(Time to Live)
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html







