S3ライフサイクルルール – 期限切れのオブジェクトを削除する

S3ライフサイクルルール - 期限切れのオブジェクトを削除する

S3ライフサイクルルール – 期限切れのオブジェクトを削除する

S3が提供する機能の1つに、ライフサイクルルールがあります。
ライフサイクルルールには2種類あります。
1つはオブジェクトを保存しているストレージクラスを、別のものに移行させるものです。
もう1つは、有効期限切れのオブジェクトを削除するものです。

[有効期限切れアクション] — このアクションではオブジェクトの有効期限を定義します。Amazon S3 はユーザーに代わって有効期限切れのオブジェクトを削除します。

ストレージのライフサイクルの管理

今回はこの有効期限切れのオブジェクトを削除する方法を確認します。

構築する環境

Diagram of S3 Lifecycle Rules - Delete expired objects

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スタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。

https://awstut.com/2021/12/02/cloudformation-nested-stacks

各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。

  • S3バケット:fa-108

AWS Management Consoleから各リソースを確認します。

S3バケットを確認します。

Detail of S3 1.

確かにライフサイクルルールが作成されています。

ルールの詳細を確認します。

Detail of S3 2.

オブジェクトがアップロードされてから1日後に、自動的に削除されるルールが設定されていることがわかります。

動作確認

準備が整いましたので、このバケットにオブジェクトを配置します。

Detail of S3 3.

配置されたオブジェクトの詳細を確認します。

Detail of S3 4.

確かにオブジェクトに有効期限日が設定されています。
「December 26, 2022, 09:00:00」とあります。

この日時まで待機します。

Detail of S3 5.

確かにオブジェクトが削除されています。

このようにライフサイクルルールを設定することによって、有効期限切れのオブジェクトを自動的に削除することができます。

まとめ

S3バケットのライフサイクルルールを使って、有効期限切れのオブジェクトを削除する方法を確認しました。