S3バケットのライフサイクルポリシーを設定してみる

はじめに

本記事ではAWS S3のライフサイクルポリシーについて実際に設定してみることでどういったパラメータがあるか、どういった振る舞いになるかを確認します。

日数がいくらか経つとデータをライフサイクルポリシーを設定してAmazon Glacierに保存するなんて手順はよく聞きますが、実際にはどう設定するんだっけ?ということを疑問に思ったあなたと私向けの記事になります。

本記事では1つのS3バケット内に2つのフォルダを作成し、それぞれのフォルダ配下のファイルに対して、

  1. 一定期間後に削除する
  2. 一定期間後にGlacierに移動する

というライフサイクルポリシーを設定する方法を説明します。

実施内容

S3バケットの作成

作成するのはテスト用のバケットとなります。念のため(誤ったファイルアップロードして事故など起こさないように)パブリックアクセスを禁止にした状態で作成しました。

ここで疑問だったのは、ライフサイクルポリシーの設定単位でした。なんとなくバケット単位なのかと思っていたのですが、ここまででそれに相当する設定は見つかっていません。この時点でライフサイクルポリシーは設定出来ないようです。バケット作成のページの一番下には以下の記載がありました。

ファイルをS3にアップロードする

早速、ファイルをアップロードしていきます。テスト用のフォルダとテキストファイルを複数作成し、作成したS3バケットにアップロードしました。フォルダを分けたのは後に、フォルダ(プレフィックス)単位にライフサイクルポリシーの動作を確認するためです。

  • long フォルダ
    • ForGlacierTestLong.txt
  • deletion フォルダ
    • ForGlacierTestDeletion.txt

データをアップロードする際に、ストレージクラスの選択が可能ですが、一旦スタンダードにしておきます。

ライフサイクルポリシールール)の作成

ライフサイクルポリシーのメニューは管理タブにあります。ライフサイクルポリシーと呼びますが、GUI上はライフサイクルルールと呼ぶようです。ここから「ライフサイクルルールを作成する」に進みます。

一定期間後に削除するルールの設定

ライフサイクルルールの名前は命名規則に従えば任意となります。今回はdeletionフォルダ(プレフィックス)に対してのルール作成を行いますので、ルールスコープを指定し、プレフィックスにはdeletionを指定します。

アクションについては、今回バージョニングを行っていませんので、現行バージョンのみが存在する状態です。そのため、今回は「オブジェクトの現行バージョンを有効期限切れにする」を選択することでライフサイクルポリシーにてオブジェクトの削除を行います。

また、ライフサイクルルールの動作確認をなるべく短期に行いたいので、有効期限切れの日数は1日としています。

最後に「ルールの作成」をクリックしてこちらの設定は完了です。

一定期間後にGlacierに移動するルールの設定

続けてlongフォルダ(プレフィックス)に対してのルール作成を行っていきます。ルールスコープを指定し、プレフィックスにはlongを指定します。

こちらの設定ではストレージクラスをスタンダードからGlacierに変更したいので、アクションとしては「オブジェクトの最新バージョンをストレージクラス間で移動」を選択します。日数は削除と同様に1日間とします。

こちらも最後に「ルールの作成」をクリックして設定は完了となります。

作成されたライフサイクルルールの確認

ここまでで以下のようなライフサイクルポリシーが作成されています。

動作確認

設定した直後の deletionフォルダ、longフォルダの状況はこちらとなっていました。

Deletion:

long:

これが1日後に状況を確認すると、、、

deletion:アップロードしたファイルが削除されていることが確認出来ましたが、deletionフォルダごと削除されてしまっていました。確かに指定したプレフィックスはフォルダを指定していたので想定通りの動作となります。

long: ストレージタイプがGlacierに変更されていることが確認出来ました。

こちらで動作確認も完了となります。

さいごに

本記事ではAWS S3のライフサイクルポリシーを設定する方法について説明しました。何事もやはり実際に手を動かすことですね。ではまた。