[アップデート] Amazon S3 Intelligent-Tiering がより使いやすくなりました(最小ストレージ期間 / 小さなオブジェクトの監視・オートメーションコストの撤廃)

アクセスパターンが読めないケースで有効な S3 Intelligent-Tiering がより便利に使用できるようになりました。コストが発生する箇所が減ったので、より多くのワークロードにマッチするようになっています。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

2021 年 9 月 2 日にあった AWS Storage Day 2021 では多くのストレージ関連の AWS サービスアップデートがありました。

その中の一つとして Amazon S3 Intelligent-Tiering に関するアップデートがありましたので、今回はそれを取り上げていきます。

簡単に言うと以下の観点でアップデートされています。

  • オブジェクトの最小ストレージ期間が 30 日から 0 日に
    • これまでは格納から 30 日未満で削除しても 30 日分のストレージ料金がかかっていた
  • 128 KB 未満のオブジェクトの監視・オートメーションの料金がタダに
    • これまではすべてのサイズのオブジェクトが課金対象だった

より幅広いワークロードで、 Amazon S3 Intelligent-Tiering によるコスト最適化が期待できるようになりました!

Amazon S3 Intelligent-Tiering とは何か

前提のところをおさらいしておきましょう。

Amazon S3 Intelligent-Tiering は S3 ストレージクラスの一つです。特にアクセスパターンが変化するワークロードにおいて有効なものです。

S3 のストレージクラスは可用性アクセス頻度取り出しのレイテンシーなど様々な観点から、いくつかの種類が用意されています。

少し情報は古いですが、以下の資料は分かりやすいかと思います。

S3StorageClass

https://www.slideshare.net/AmazonWebServicesJapan/20190220-aws-black-belt-online-seminar-amazon-s3-glacier/45 より

アクセス頻度が低いオブジェクトは、専用のストレージクラスを選択することでストレージ料金(保管するデータ量に基づいた料金)を安くできます。しかし、どのオブジェクトがどの程度のアクセス頻度となるかを事前に予測するのが難しい場合もあります。

そんなケースで Amazon S3 Intelligent-Tiering を選択することで、各オブジェクトのアクセス頻度のモニタリングおよび自動的な階層の移動が実現され、適切なストレージ料金を適用できます。

Amazon S3 Intelligent-Tiering の 4 つの階層


2022/7/26追記 2021/12に新しい階層が増え、5つになっています

以降の記述は追記前の内容となります。


Amazon S3 Intelligent-Tiering には以下の 4 つの階層があります。

  • 高頻度アクセス階層(S3 スタンダード相当)
  • 低頻度アクセス階層(S3 標準 - 低頻度アクセス相当)
  • アーカイブアクセス階層(S3 Glacier 相当)
  • ディープアーカイブアクセス階層(S3 Glacier Deep Archive 相当)

それぞれの階層で、他のストレージクラスと同等のストレージ料金が発生します。

S3 Intelligent - Tiering

デフォルトでは高頻度アクセス階層低頻度アクセス階層のみが有効となり、アクセス頻度に基づきふたつの階層を行き来します。30 日間アクセスがなければ低頻度アクセス階層に移動され、アクセスが発生すれば高頻度アクセス階層に戻ります。

アーカイブアクセス階層およびディープアーカイブアクセス階層の使用にはオプトインが必要です。

S3 バケットの「プロパティ」から設定できる Intelligent-Tiering Archive 設定 を行うことで、いずれか一方もしくは両方の階層への移動を有効化できます。

Inteligent_-Tiering-archive

S3 Intelligent-Tiering ストレージクラスのオブジェクトで一定期間アクセスがない場合に、上記で指定した(ディープ)アーカイブアクセス階層へ移動させることができます。

期間はカスタマー側で指定でき、以下の枠から選択可能です。

  • アーカイブアクセス階層
    • 90日〜730日
  • ディープアーカイブアクセス階層
    • 180日〜730日
    • アーカイブアクセス階層への移動と併用する場合、それより長い日数の指定が必要

階層を移動してからの経過日数ではなく、あくまでオブジェクトにアクセスが無い日数が基準となりますのでご注意ください。

(ディープ)アーカイブアクセス階層に移動したオブジェクトの取り出しは非同期となり、復元リクエストを行ってから一定期間経過後にアクセスできるようになります。

取り出しにはいくつかのタイプがあり、追加料金を支払うことでより短い時間で復元ができるタイプもあります。アーカイブアクセス階層の Expedited (迅速)取り出し以外は、いずれも数時間〜数十時間かかりますので、特性を理解しておきましょう。

Storage class or tier Expedited Standard Bulk
S3 Intelligent-Tiering Archive Access tier 1–5 minutes 3–5 hours 5–12 hours
S3 Intelligent-Tiering Deep Archive Access tier Not available Within 12 hours Within 48 hours

Amazon S3 Intelligent-Tiering で何ができるようになったのか

冒頭の繰り返しとなりますが、今回のアップデートで S3 Intelligent-Tiering は以下に対応しました。

  • オブジェクトの最小ストレージ期間が 30 日から 0 日に
  • 128 KB 未満のオブジェクトの監視・オートメーションの料金がタダに

順番に説明していきます。

オブジェクトの最小ストレージ期間が 30 日から 0 日に

従来の S3 Intelligent-Tiering を含むいくつかのストレージクラスでは、最小ストレージ期間(minimum storage duration)という考え方があります。

30 日が経過する前にオブジェクトが削除された場合、その 30 日の残りのストレージ料金が日割りで請求されます。30 日が経過する前にオブジェクトが削除されたり、上書きされたり、別のストレージクラスに移行されたりした場合、通常のストレージ利用料金に加えて、その 30 日の残りのリクエスト料金が日割りで請求されます。

正直後半の部分は何を指すのか(リクエスト料金とは?)理解が追いついていませんが、期間経過前に削除されても料金がかかる、という点はしっかり記載されています。極論を言えば、格納してすぐに削除を行なっても 30日分の料金がかかるということです。

S3 Intelligent-Tiering ではこの制限がなくなったため、格納後すぐに削除される・バージョニングされる、といったワークロードにおいても気兼ねなく使えるようになりました。

128 KB 未満のオブジェクトの監視・オートメーションの料金がタダに

先ほど見たような階層移動には実はオブジェクトサイズの制限があります。128KB 未満のオブジェクトの場合、階層の移動は行われず常に高頻度アクセス階層に配置されます。

「高頻度アクセス階層に固定」というのはアップデート後も変わっていませんが、料金の考え方が変わりました。

S3 Intelligent-Tiering では監視・オートメーションの料金としてオブジェクト 1,000 件あたり 0.0025USD(2021年9月現在東京リージョンの場合)のコストがかかります。アクセス頻度をモニタリングし適切な階層に移動させる、という動きにはコストが発生するわけです。

これまでは 128 KB 未満で階層移動が行われないオブジェクトにもその料金が発生していましたが、アップデートにより課金の対象外となりました。(ストレージ料金などは変わらずかかります。)

細かいサイズの大量のオブジェクトと大きめのサイズのオブジェクトが混在している、という環境において、監視・オートメーションのコストを気にせず S3 Intelligent-Tiering ストレージクラスを選択できるようになりました。

Amazon S3 Intelligent-Tiering を使用するには

ここまで見てきたような S3 Intelligent-Tiering を使用するためには、オブジェクトのストレージクラスの指定が必要です。

S3 バケットのデフォルトのストレージクラスは常に「 S3 標準(スタンダード)」であり、Put 時に自動的に異なるストレージクラスを適用させるような設定はありません。

そのため S3 Intelligent-Tiering の使用には以下のいずれかの手法をとる必要があります。

  • Put 時に直接指定する
  • 格納済みのオブジェクトのストレージクラスを手動で変更する
  • ライフサイクルにより自動で変更する

1 番目はユーザーが Put する際に指定できるものです。例えば aws s3api put-objectであれば--storage-classというオプションが用意されていますし、マネジメントコンソールからのアップロード時にはプロパティからストレージクラスを選択できます。

2 番目は AWS CLI であればaws s3api copy-object--storage-classを指定することで実現できますし、マネジメントコンソールからであれば「オブジェクトアクション」→「ストレージクラスの編集」で操作可能です。

3 番目が最もメジャーな手法になるかと思いますが、ライフサイクルルールを作成することで一定期間経過後に自動的にストレージクラスを移行できます。

ライフサイクルによる移行の注意点

ライフサイクルによる移行を行う場合、注意点があります。

ライフサイクルの移行自体に料金がかかることと、移行パスに制限があることです。

2021年9月現在の東京リージョンでは ライフサイクル移行リクエストで 1000 リクエストあたり 0.01 USD のコストがかかります。オブジェクト数が多い場合には無視できない金額になりますので念頭に置いておきましょう。

また、ライフサイクルでは以下に示す移行パスのみがサポートされています。S3 Intelligent-Tiering に移行できるのは S3 スタンダード、RRS(非推奨)、S3 標準 - 低頻度アクセスのいずれかとなります。

lifecycle-transitions-v2

よりよい S3 ライフをお過ごしください

Amazon S3 Intelligent-Tiering のより幅広いワークロードに対応したアップデートでした。

アクセスパターンを事前に予測する必要なく適切なストレージ料金を割り当ててくれるストレージクラスであるため、便利に使っていきたいですね。

とは言えなんでもかんでも S3 Intelligent-Tiering を選択すればいいというわけではなく、以下のコストが発生することを押さえておきましょう。

  • 128KB 以上のオブジェクトには監視およびオートメーションのコストがかかる
  • ライフサイクルによる移行を行う場合は移行コストがかかる

適性を理解した上で、よりよい S3 ライフをお過ごしください。

以上、 チバユキ (@batchicchi) がお送りしました。

参考