- 公開日
- 最終更新日
S3 バケットの保持期間と有効期限について
この記事を共有する
目次
はじめに
こんにちは、パーソル&サーバーワークスの Endo です。
本記事では、Amazon S3 バケット(以降、S3 バケット)にて設定可能な保持期間、有効期限についてまとめたいと思います。
保持期間、有効期限が設定できる箇所
S3 バケットでオブジェクトの保持や有効期限を設定できる箇所は、以下 2 箇所となります。
- S3 ライフサイクルのオブジェクトの有効期限を設定
- S3 Object Lock のオブジェクトバージョンがロックされる期間(保持期間)を設定
S3 ライフサイクル
S3 ライフサイクルは、一定期間経過したオブジェクトのストレージクラスを移行または削除することによって、コスト効率よくオブジェクトを保存できる機能です。
移行アクションと有効期限アクションの二種類がサポートされています。
ライフサイクルの概要については以下をご参照ください。
ご参考:オブジェクトのライフサイクルを管理する
S3 Object Lock
S3 Object Lock は、オブジェクトを一定期間、または無期限に保存・保管する要件がある際に、指定した期間中の削除や上書きを防ぐ機能です。
リテンションモードにはコンプライアンスモードとガバナンスモードがあり、どこまで操作を許容するかによって設定するモードが変わります。
また、Object Lock にはリーガルホールドもあります。
Object Lock の概要については以下をご参照ください。
ご参考:S3 Object Lock を使用したオブジェクトのロック
オブジェクトにどう作用するのか
名前は異なりますが、どちらも一定期間経過後の処理を設定するものとなっています。
以下の表は、それぞれの観点をまとめたものとなります。
| 観点 | S3 ライフサイクル | S3 Object Lock |
|---|---|---|
| 主な処理内容 | ストレージクラスの移行、オブジェクトの削除 | オブジェクトバージョンの削除・上書きの防止 |
| 保持期間のカウント起点 | オブジェクトの作成日(最終更新日) | バージョンごとに設定する RetainUntilDate※保持期限を示すメタデータ |
| 設定の粒度 | プレフィックスやタグ単位のルール | オブジェクトバージョン単位 |
| 前提条件 | 特になし | バケットのバージョニングが有効であること |
| 目的 | コスト最適化(古いデータの移行・自動削除) | コンプライアンス対応(削除・上書きの防止) |
併用した場合の挙動について
両方を設定している場合は、基本的に Object Lock が外れたらライフサイクルによるオブジェクトの削除が正しく実行される挙動となります。
以下の表で、ライフサイクルと Object Lock の設定期間別パターンの挙動をまとめています。
| パターン | 条件 | 結果 |
|---|---|---|
| 1 | ライフサイクルの有効期限 < Object Lock の保持期間 | ライフサイクルの期限が先に来るが、まだロック中のため削除はスキップされる。 Object Lock の保持期間が切れたあとに削除される。 |
| 2 | ライフサイクルの有効期限 = Object Lock の保持期間 | ロックが外れていない間はオブジェクトの削除が実行されないため、実質的にロックが外れた後の評価タイミングで削除される。 |
| 3 | ライフサイクルの有効期限 > Object Lock の保持期間 | Object Lock の保持期間が先に切れているため、ライフサイクルの期限が来た時点で問題なく削除される。 |
※ライフサイクルの考慮事項のとおり、ライフサイクルルールの条件が満たされるタイミングと、アクションが行われるまでの間には遅延が発生します。
おわりに
いかがでしたでしょうか。
本記事がどなたかのお力になりましたら幸いです。
この記事は私が書きました
S.Endo
記事一覧コーヒーインストラクター検定2級を所持しているエンジニアです。コーヒーを飲みながら仕事をしています。