S3ライフサイクルルールを使用して、オブジェクトのクラスを変更する
以下のページで、S3ライフサイクルルールにおけるオブジェクトの有効期限切れを扱いました。
今回はS3ライフサイクルルールを使用して、オブジェクトのストレージクラスを変更する方法を確認します。
Transition actions — 別のストレージクラスにオブジェクトを移行するタイミングを定義します。例えば、作成から 30 日後に S3 標準 – IA ストレージクラスにオブジェクトを移行するか、作成から 1 年後に S3 Glacier Flexible Retrieval ストレージクラスにオブジェクトをアーカイブするよう選択することができます。
ストレージのライフサイクルの管理
構築する環境
S3バケットを作成します。
バケットのライフサイクルルールを設定します。
オブジェクトのストレージクラスを移行するルールです。
バケットにオブジェクトが設置されて1日後に、クラスをS3 Intelligent-Tieringに移行させます。
CloudFormationテンプレートファイル
上記の構成をCloudFormationで構築します。
以下のURLにCloudFormationテンプレートを配置しています。
https://github.com/awstut-an-r/awstut-soa/tree/main/06/001
テンプレートファイルのポイント解説
S3バケット
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Ref Prefix
LifecycleConfiguration:
Rules:
- Id: !Sub "${Prefix}-Lifecyclerule"
Status: Enabled
Transitions:
- StorageClass: !Ref StorageClass
TransitionInDays: !Ref TransitionInDays
Code language: YAML (yaml)
ライフサイクルルールはLifecycleConfigurationプロパティで設定します。
ライフサイクルルールにおけるストレージクラスの移行に関しては、Transitionsプロパティで設定できます。
StorageClassプロパティで移行先のストレージクラスを指定します。
今回は「INTELLIGENT_TIERING」を指定し、S3 Intelligent-Tieringに移行するように設定します。
TransitionInDaysプロパティで移行までの日数を指定します。
今回は「1」を指定し、オブジェクト設置後、1日後にストレージクラスを移行するように設定します。
環境構築
CloudFormationを使用して、本環境を構築し、実際の挙動を確認します。
CloudFormationスタックを作成し、スタック内のリソースを確認する
CloudFormationスタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。
各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。
- S3バケット:soa-06-001
AWS Management ConsoleからS3バケットライフサイクルルールを確認します。
確かにライフサイクルルールが作成されています。
確かに移行ルールが作成されています。
オブジェクト設置してから1日後に、ストレージクラスをS3 Intelligent-Tieringに移行する内容です。
動作確認
オブジェクト設置
準備が整いましたので、まずはテスト用のオブジェクトを作成します。
$ dd if=/dev/zero of=./hoge.txt bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00095441 s, 1.1 GB/s
$ ls -lh ./hoge.txt
-rw-rw-r-- 1 ec2-user ec2-user 1.0M Dec 5 10:46 ./hoge.txt
Code language: Bash (bash)
1MBのファイルを作成しました。
これは以下の仕様に対応するためです。
S3 Standard または S3 Standard – IA ストレージクラスから S3 Intelligent-Tiering、S3 Standard – IA、または S3 1 ゾーン – IA にオブジェクトを移行する場合、次のオブジェクトサイズ制約が適用されます。
[128 KiB 未満のオブジェクト] – 以下の移行で、Amazon S3 は128 KiB 未満のオブジェクトを移行しません。
Amazon S3 ライフサイクルを使用したオブジェクトの移行
このファイルをS3バケットにアップロードします。
$ aws s3 cp ./hoge.txt s3://soa-06-001/
upload: ./hoge.txt to s3://soa-06-001/hoge.txt
Code language: Bash (bash)
改めてバケットにアクセスし、オブジェクトの状況を確認します。
確かにオブジェクトがアップロードされています。
Storage classの列を見ると、このオブジェクトのストレージクラスがStandardであることがわかります。
ライフサイクルルール適用後
オブジェクトアップロードから1日後、改めてバケットを確認します。
Storage classが「Intelligent-Tiering」になりました。
ライフサイクルルールによって、確かにクラスストレージが変更されました。
まとめ
S3ライフサイクルルールを使用して、オブジェクトのストレージクラスを変更する方法を確認しました。