Time to live が期限切れの項目が Amazon DynamoDB テーブルから削除されないのはなぜですか?

最終更新日: 2022 年 8 月 26 日

有効期限 (TTL) が期限切れの項目の一部が、Amazon DynamoDB テーブルからまだ削除されていません。

解決方法

DynamoDB TTL 機能を使用すると、項目ごとにタイムスタンプを定義して、項目が不要になった時期を判断できます。指定されたタイムスタンプの日時の直後に、DynamoDB は書き込みスループットを消費せずにテーブルから項目を削除します。TTL は、ワークロードのニーズのために最新の状態を維持する項目のみを保持することにより、保存データ量を削減する手段として、追加費用なしで提供されます。DynamoDB テーブルで TTL をアクティブ化する場合、項目が期限切れの要件を満たしているかどうかを判断するときにサービスが検索する特定の属性名を知っている必要があります。テーブルで TTL をアクティブ化すると、パーティションごとのスキャナーのバックグラウンドプロセスが、テーブル内の項目の有効期限ステータスを自動的かつ継続的に評価します。

期限切れの項目の削除に時間がかかるいくつかの一般的な原因は次のとおりです。

  • 期限切れの項目の実際の削除オペレーションは、テーブルのサイズとアクティビティレベルによって異なる場合があります。TTL はバックグラウンドプロセスであるため、TTL を使用して項目を期限切れにして削除するために使用されるキャパシティの性質はさまざまです。
  • TTL プロセスでは、通常、有効期限が切れてから 48 時間以内に期限切れの項目が削除されます。ただし、このタイムラインは SLA ではありません。TTL 削除はベストエフォートベースで行われ、場合によっては削除に時間がかかることがあります。TTL を使用したオブジェクトの削除中、DynamoDB はプロビジョンドキャパシティを使用する代わりに、テーブルのバックエンドキャパシティを使用してオブジェクトを削除します。削除リクエストが多数あり、それらの項目を継続的に削除するのに十分なバックエンドキャパシティがない場合、削除プロセスに時間がかかることがあります。

TTL が正しく動作しているかどうかを確認するには、次の操作を実行します。

  • テーブルで TTL がアクティブ化されていることと、関連する設定が正しいことを確認してください。
    • 項目には、テーブルで TTL をアクティブ化したときに指定した属性が含まれている必要があります。
    • TTL 属性の値には、Number のデータタイプがある必要があります。
    • TTL 属性の値は、Unix エポックタイム形式 () のタイムスタンプである必要があります。
    • TTL 属性の値は、有効期限が過去 5 年以内の datetimestamp である必要があります。
  • TTL プロセスは、これらのプロセスがテーブルオペレーションに干渉しないように、予備のキャパシティが十分にある場合にのみテーブル上で実行されます。割り当てられたキャパシティのほとんどをテーブルまたはテーブルパーティションが使用している場合、予備のキャパシティが不十分なために TTL プロセスが実行されないことがあります。

期限切れとなっているが、TTL によってまだ削除されていない項目は、読み取り、クエリ、およびスキャンで引き続き表示されます。期限切れの項目を結果セットに含めたくない場合は、それらの項目を除外する必要があります。そのためには、Time to Live の有効期限の値がエポック形式の現在の時間よりも大きい項目のみを返すフィルター式を使用します。詳細については、「Scan のフィルタ式」を参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?