今回はS3のIntelligent-Tieringの設定方法をパターン別で解説します。
Intelligent-Tieringとは
S3 Intelligent-Tieringは、Amazon S3 のストレージクラスの一つで、データのアクセス頻度を自動的に監視・解析し、アクセスパターンに応じて最適なストレージ階層(頻繁アクセス用・低頻度アクセス用など)へデータを移動してくれる機能です。
これによりコストを最適化しながらデータを保存できます。

詳細はこちら↓
S3 Intelligent-Tiering の仕組み
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/intelligent-tiering-overview.html
設定方法
Intelligent-Tieringの設定方法をパターン別に紹介します。
パターン1: 既存のオブジェクトをIntelligent-Tieringに変更する
すでにS3にアップロードされているオブジェクトをIntelligent-Tieringに変更するには、ライフサイクルルールを利用します。
ライフサイクルルールはAmazonS3->バケット->対象バケット->管理->ライフサイクルルールを作成する
から設定できます。
- ライフサイクルルールの設定
- ライフサイクルルール名を入力します。
- 今回はバケット内のすべてのオブジェクトにライフサイクルルールを適用するため、「バケット内のすべてのオブジェクトに適用」を選択します。
- ライフサイクルルールのアクション
- 「現行バージョンのオブジェクトをストレージクラス間で移行する」を選択します。
- オブジェクトの現行バージョンをストレージクラス間で移行する
- 「ストレージクラスの移行を選択」でIntelligent-Tieringを選択します。
- 「オブジェクト作成後の日数」を0に設定します。

これで既存のオブジェクトがIntelligent-Tieringに移動されるようになりました。
実際の動作を確認してみましょう。テスト用のファイルをS3に配置して、ライフサイクルルールを作成します。
128KB未満のオブジェクトはIntelligent-Tieringの自動階層化の対象外なので、常に高頻度アクセス階層の料金で課金されます。なので動作確認用のファイルは128KB以上で作成しておきます。

しばらく経つと、ライフサイクルルールによりIntelligent-Tieringに移動されます。
パターン2: 新規オブジェクトをIntelligent-Tieringでアップロードする
S3にオブジェクトをアップロードする時に、直接Intelligent-Tieringクラスを選択することもできます。
手動の場合
アップロード画面のプロパティを開くと、ストレージクラス選択欄が表示されます。Intelligent-Tieringを選択してアップロードします。

CLIの場合
s3 cp
コマンドでオブジェクトをアップロードする際に、--storage-class INTELLIGENT_TIERING
オプションを追加します。
$ aws s3 cp testfile2.txt s3://MY-BUCKET/pattern2/testfile2.txt --storage-class INTELLIGENT_TIERI

パターン3: 新規オブジェクトをスタンダードクラスでアップロードした後にIntelligent-Tieringに変更する
パターン2のようにIntelligent-Tieringに直接アップロードできない場合は、パターン1のようにライフサイクルルールを設定することで、新規オブジェクトをIntelligent-Tieringに移動することができます。
実際の動作を確認してみます。ライフサイクルルールを設定したバケットにオブジェトをアップロードしました。この時点ではまだスタンダードクラスです。

しばらく経つと、ライフサイクルルールによりIntelligent-Tieringに移動されます。

おわりに
S3は放っておくとデータ保存容量が大きくなり、意外とコストがかかっていたということがよくあります。
コスト最適化をする際は、Intelligent-Tieringの導入を検討してみるといいかもしれません。
コメント