S3 ライフサイクルルールで期限切れの削除マーカーが削除されない理由を教えてください

2024.02.13

困っていた内容

以下のようにS3バケットのライフサイクルルールを設定していますが、想定した通りに動作していません。 現行バージョンが削除マーカーのみとなっており、オブジェクトがアップロードされてから400日経過しているにもかかわらず、削除マーカーが期限切れの削除マーカーとして削除されません。何故削除マーカーが完全に削除されないのか教えてください。

【ライフサイクルルールの設定】

  • オブジェクトの現行バージョンを有効期限切れにする
    • オブジェクト作成後の日数:300 日
  • オブジェクトの非現行バージョンを完全に削除
    • オブジェクトが現行バージョンでなくなってからの日数:1 日
    • 保持する新しいバージョンの数:なし

【オブジェクト情報】

  • バージョニングは有効化されている
  • S3にオブジェクトをアップロードしてから400日経過
  • 現行バージョンは削除マーカーのみで、非現行バージョンは存在しない

具体的な解決方法

バージョニングが有効のバケットでは、現行バージョンの失効ルールによるオブジェクトの有効期限が経過し削除された場合、削除マーカーが最新のバージョンとしてPUTされます。また、ライフサイクルルールの設定画面では「オブジェクト作成後の日数」とありますが、正確には「現行バージョンが作成されてからの日数」で期限切れとなるため、削除マーカーが期限切れとして認識されるには削除マーカーが作成されてから300日経過する必要があります。

上記の設定では、オブジェクト自体はアップロードから300日経過しているものの、削除マーカーが現行バージョンとして生成されてから100日(400 - 100日)程度しか経過していないため、期限切れにはならず削除マーカーの完全な削除が行われません。

もし、早急に削除マーカーを期限切れにして削除したい場合は、コンソールから直接削除を行うか、新しいライフサイクルルールを追加し、「有効期限切れのオブジェクト削除マーカーまたは不完全なマルチパートアップロードを削除」の「期限切れのオブジェクト削除マーカーを削除する」を設定することで、次のライフサイクルルールの実行タイミングで完全な削除が可能です。(期限切れの削除マーカーの条件を満たしている場合)

参考情報