追記
概要
S3には4つのストレージタイプがあり用途によって使い分けることでコストを最小化できます。
例えばWebサービスで配信する画像のように「頻繁にアクセスする」用途では「標準」が最適ですが、バックアップデータ(データベースダンプやサイトを構成するファイル群)やログファイルのように「たまにしか使わないけど、必要になった場合はすぐに取り出したい」というような用途の場合は「低頻度ストレージ(標準 or 1ゾーン)」を利用することでストレージコストを低減できます。
この記事では、以下について検討してみました。
- 低頻度ストレージを利用するとどれくらい料金が節約できるのか?
- どのような用途の時に利用すればよいのか?
- 留意点(落とし穴)は何か?
(公式)ストレージクラス - Amazon S3(クラウドストレージ)|AWS
ストレージタイプの比較
ストレージタイプ | 識別子 | 用途 | レイテンシ | 保管されるゾーン数 | 最小ストレージ期間 | 可用性 | 保管料金(1) | 標準を100とした場合の料金 |
---|---|---|---|---|---|---|---|---|
標準 | STANDARD | 配信画像・映像、分析データなど | ミリ秒 | 3以上 | ー | 99.99% | 0.025 | 100 |
標準/低頻度 | STANDARD_IA | バックアップ | ミリ秒 | 3以上 | 30日 | 99.90% | 0.019 | 76 |
1ゾーン/低頻度 | ONEZONE_IA | ログ | ミリ秒 | 1 | 30日 | 99.50% | 0.0152 | 60.8 |
Glacier | REDUCED_REDUNDANCY | 長期アーカイブ | 分または時(選択) | 3以上 | 90日 | 該当なし | 0.005 | 20 |
※低頻度ストレージタイプの識別子に含まれる"IA"は**Infrequent Access(まれなアクセス)**の略です。
なお、本記事の投稿後(18/11/08)に以下の記事がAmazon公式ブログで公開されてました。日付は2018/11/27。こちらもストレージタイプの違いや用途・留意点について記載されていますのでご覧いただくと良いかと思います。
新機能- Intelligent TieringによるAmazon S3の自動的なコスト最適化( | Amazon Web Services ブログ
低頻度ストレージを利用するとどれくらい料金が節約できるのか?
「保存」に関してだけで考えると約25%~40%の低減が可能です。(上述した比較表の「標準を100とした場合の料金」を参照)
ただし、「データの保管期間が短い場合」や「取り出し頻度が多い場合」は「低頻度ストレージ」のほうが「標準ストレージ」より高額になることもありえるので注意が必要です。詳しくは後述。
低頻度ストレージ検討時の留意点(落とし穴)
低頻度ストレージを選ぶ場合は、「最小ストレージ期間」に注意が必要です。
これは1日や1週間しか保存しないデータでも30日分の料金が請求されるという意味です。
例えば毎日上書きするデータや1週間しか保存しないデータは「標準」で保存したほうが有利です。
(具体的には、毎日上書きする場合は1ヶ月で30オブジェクトx30日分の課金発生!!)
【2021年3月1日追記】この料金仕様は直観と違うので、たぶん苦情が多かったのだと思いますが、S3の料金(AWS公式ページ)に明記されるようになっていました。
S3 Intelligent Tiering、S3 標準 – IA、S3 1 ゾーン – IA のストレージには、最低 30 日間のストレージ料金が課金されます。
30 日が経過する前にオブジェクトが削除された場合、その 30 日の残りのストレージ料金が日割りで請求されます。
30 日が経過する前にオブジェクトが削除されたり、上書きされたり、別のストレージクラスに移行されたりした場合、
通常のストレージ利用料金に加えて、その 30 日の残りのリクエスト料金が日割りで請求されます。
また保管料金そのものは「標準ストレージ」と比べると安いですが、データの取り出し時に料金が加算されることの考慮も必要です。(目安としては0.01USD/GB)
料金(低頻度アクセス) - Amazon S3(クラウドストレージ)|AWS
表現を変えると「取り出し時課金」がないので、頻繁にアクセスされるデータは「標準ストレージ」を選択します。
以上より以下のような特徴のある場合は低頻度ストレージで保管するのに適していると言えます。
- 頻繁にはアクセスしない
- 必要になった場合は迅速に取り出したい
- 30日以上保管する[^2]
- (さらに1ゾーンの場合は)重要度が低い(万が一消えても復元できる)
AWS CLIでの利用
aws cliで利用する場合は、 --storage-class <識別子>
と指定することでストレージクラスを指定できます。
以下は、1ソーン/低頻度を指定した例です。(指定しない場合は「標準(STANDARD)」と扱われます)
aws s3 cp /path/to/object s://bucket/path/to/ --acl private --storage-class ONEZONE_IA
※識別子ONEZONE_IA は aws-cliのバージョン1.15.83以降でないと利用できません。(1.14だと以下のエラーが発生します。)
aws: error: argument --storage-class: Invalid choice, valid choices are:
STANDARD | REDUCED_REDUNDANCY
STANDARD_IA
追記
S3上のオブジェクトの「ストレージクラスの変更」ダイアログでの表示
-
GBあたりの単価で単位はUSD。東京リージョンの最初の50TB ↩