あるSaaS企業が、DynamoDBに大量のユーザーセッションデータを保存している。セッションは作成から24時間後に自動的に削除したい。削除処理はアプリケーションへの影響を最小化し、追加コストをできるだけ抑えて実装したい。最も適切な方法はどれか。
- A. EventBridgeルールで1時間ごとにLambdaを起動し、有効期限切れのアイテムをスキャンして削除する
- B. アイテム作成時にTTL属性(Unixエポック秒)を設定し、テーブルのTTL設定でその属性を指定する
- C. DynamoDB Streamsを有効化し、ストリームのLambdaでアイテムの作成日時を監視して削除する
- D. CloudWatch Alarmsで監視し、アイテム数が閾値を超えたらLambdaを起動して古いアイテムを削除する
解答と解説を見る
正解: B
DynamoDB TTL(Time to Live)は、アイテムのUnixエポック秒を格納した属性を指定するだけで、DynamoDB内部プロセスが期限切れアイテムを自動削除する機能である。追加料金は不要で、アプリケーションコードやLambdaを必要とせず、運用負荷が最も低い。Aのスケジュールドスキャン方式はスキャンコスト(RCU消費)が高く、大規模テーブルではスロットリングが発生しやすい。Dのアイテム数ベース監視では古さではなくアイテム数で判断するため要件を満たせず、スキャンコストもかかる。CのStreams+Lambdaは作成時点でのみトリガーされるため期限切れの監視には使えず、余分な複雑さを生む。