DynamoDBのTTL(Time To Live)の使い方

DynamoDBのTTL(Time To Live)の使い方

TTL(time to live)とは生存時間を意味します。

これはpingコマンドなどのパケットの生存時間でも出てくる言葉なので聞いたことがあるかもしれません。

このTTLがDynamoDBのテーブルの項目に対しても適用することができます。DynamoDBではTTLを有効期限と呼んでいるようです。

このTTLを利用して、テーブルの項目の有効期限が切れたら、DynamoDBから自動的に項目を削除できるように定義することができます。RDBならデータがたまっていくので夜間バッチで削除しないといけない、など考慮がいるのですが、DynamoDBの場合、TTLを指定して例えば7年後の秒を指定すると7年後に項目を勝手に削除してくれるという非常に便利な機能です。

TTLの有効化

TTLの有効化はテーブル単位で行います。

DynamoDBのTTL(Time To Live)の使い方

「TTLの管理」をクリックします。

DynamoDBのTTL(Time To Live)の使い方

上記ではTTL属性を「ttl」としていますが、属性名はttlである必要もなく、例えばexpire_timeなどでもよく、要するに任意の名前でいけます。

TTL属性にした項目はNumber型にする必要があります。(ダブルクォーテーションで囲まない)

また、秒単位(UTC)で値を指定します。ミリ秒で指定してしまうと、以下のようにとんでもない数字になってしまいますので気を付けてください。

ttlと言う属性に(TTL)とマークされるようになります。また、カーソルをあてると秒が表示されるので、便利ですね。どうもリージョンの時間ではなくLocalの時間で削除されるようです。LocalはUTC+9なのでJSTとなりますね。ということはTTL属性に指定する時間はUTCで計算した秒を指定すれば日本時間で削除されることになります。

DynamoDBのTTL(Time To Live)の使い方

有効期限と削除時間の間の潜在的な遅延

DynamoDBはバックグラウンドでその項目が有効期限切れかどうかを確認します。

但し、ベストエフォート(なるべく頑張るみたいな)のようで、通常48時間以内には削除されるようです。テスト的に簡単なテーブルで実行したところ、3~5分ほどの遅延があって削除されることを確認しました。

参考サイト

コメント

タイトルとURLをコピーしました