S3ライフサイクルルール – 期限切れのオブジェクトを削除する
S3が提供する機能の1つに、ライフサイクルルールがあります。
ライフサイクルルールには2種類あります。
1つはオブジェクトを保存しているストレージクラスを、別のものに移行させるものです。
もう1つは、有効期限切れのオブジェクトを削除するものです。
[有効期限切れアクション] — このアクションではオブジェクトの有効期限を定義します。Amazon S3 はユーザーに代わって有効期限切れのオブジェクトを削除します。
ストレージのライフサイクルの管理
今回はこの有効期限切れのオブジェクトを削除する方法を確認します。
構築する環境
S3バケットを作成します。
バケットのライフサイクルルールを設定します。
オブジェクトの有効期限を設定し、自動的に削除するルールです。
CloudFormationテンプレートファイル
上記の構成をCloudFormationで構築します。
以下のURLにCloudFormationテンプレートを配置しています。
https://github.com/awstut-an-r/awstut-fa/tree/main/108
テンプレートファイルのポイント解説
S3バケット
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Ref Prefix
LifecycleConfiguration:
Rules:
- ExpirationInDays: !Ref ExpirationInDays
Id: !Sub "${Prefix}-Lifecyclerule"
Status: Enabled
Code language: YAML (yaml)
ライフサイクルルールはLifecycleConfigurationプロパティで設定します。
ExpirationInDaysプロパティでオブジェクトの有効期限を設定できます。
今回は検証ということで、本プロパティに「1」と指定します。
これでオブジェクトの設置後、1日後に削除されるようになります。
環境構築
CloudFormationを使用して、本環境を構築し、実際の挙動を確認します。
CloudFormationスタックを作成し、スタック内のリソースを確認する
CloudFormationスタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。
各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。
- S3バケット:fa-108
AWS Management Consoleから各リソースを確認します。
S3バケットを確認します。
確かにライフサイクルルールが作成されています。
ルールの詳細を確認します。
オブジェクトがアップロードされてから1日後に、自動的に削除されるルールが設定されていることがわかります。
動作確認
準備が整いましたので、このバケットにオブジェクトを配置します。
配置されたオブジェクトの詳細を確認します。
確かにオブジェクトに有効期限日が設定されています。
「December 26, 2022, 09:00:00」とあります。
この日時まで待機します。
確かにオブジェクトが削除されています。
このようにライフサイクルルールを設定することによって、有効期限切れのオブジェクトを自動的に削除することができます。
まとめ
S3バケットのライフサイクルルールを使って、有効期限切れのオブジェクトを削除する方法を確認しました。