S3 Intelligent-Tieringを検討する際は、四半期に一度以上のアクセス頻度だとしてもGlacier Instant Retrievalも検討しよう

記事タイトルとURLをコピーする

CR2課の前田です。

皆さんはS3ストレージクラスを検討していて「アクセス頻度が不明だからS3 Intelligent-Tieringを採用するか。S3 Glacier Instant Retrievalは四半期に一度しかアクセスしないデータ向けだから不向きだろう」と考えたことはないでしょうか?

私は現在担当している案件において、アクセス頻度が不明という要件を聞いていたため、同じことを考えてAmazon S3 Intelligent-Tiering(以下、Intelligent-Tiering)を選択肢として考えていました。
しかし、念のため試算してみると、高頻度でアクセスされても、取り出すデータ量が少なければAmazon S3 Glacier Instant Retrieval(以下、Glacier IR)が有利になるパターンもあると気付きました。

私の二の舞になる方が出ることを防ぐべく、本記事のテーマについての解説をこのブログに記載いたします。

おことわり

  • 料金は全て米ドル表記です。2026年4月15日時点の情報をもとに年間利用料を計算しています。
  • PUT等のアップロード時のリクエスト料金やデータ転送料金は、アクセスパターンによって大きく変動するため除外しています。
  • 類似の選択肢としてStandard-IAもありますが、Glacier IRやIntelligent-Tieringの方が安くなるパターンが大半なので、今回は除外します。
  • 本ブログは机上の計算のみで検証は伴っていないため、算出結果と実際の値にはズレがある可能性があることにご留意ください。
  • 試算においては前提条件(Intelligent-Tieringの階層割合)に左右されたり、小数点を丸めたりしているところがあるため厳密な計算結果と異なります。しかし、本ブログは数字を綿密にお伝えすることが目的ではなく、標題の件をお伝えすることを第一目的としていますので、許容いただけますと幸いです。

結論

  • Glacier IRは取り出すデータ量が少なければ、「四半期に一度」より頻繁にアクセスしても安いパターンもある。
  • AWS公式の想定ユースケースは目安なので、実際の数値で試算しましょう

Glacier IRとは?

S3 Glacier Instant Retrievalは、長期保存データ向けのアーカイブストレージクラスです。

従来のGlacierは、ストレージ料金が安い代わりに取り出し速度が遅い(最短でも数分)…というサービスでした。
Glacier IRは、安いストレージ料金($0.005/GB/月)と、S3 Standardと変わらない取り出し速度(ミリ秒単位)を両立したストレージクラスです。

ただし、データ取り出しにあたり$0.03/GBの利用料金が発生するため、AWS公式では「四半期に一度アクセスされるデータ」を想定ユースケースとして記載しています。

この記載を見て、「うちは毎日アクセスするから対象外だな」と思った方もいらっしゃるのではないでしょうか。

実は、アクセス頻度が高くても、Glacier IRの方が安いケースがあります。

さっそく試算

私が実際に担当した案件を例として、Glacier IRとIntelligent-Tieringの利用料金を比較してみます。
Intelligent-Tieringについての詳細は、以前のブログ記事「S3 Intelligent-Tieringの損益分岐点を計算してみた」をご参照ください。

前提

  • オブジェクト数: 630万件
  • オブジェクトサイズ: 1MB
  • 総オブジェクトサイズ: 6.3TB
  • アクセス頻度: 1日100件(3.65万件/年)。取り出されるオブジェクトは重複しない。1年で36.5GBが取り出される想定。
  • Intelligent-Tieringの各階層への配置割合は、下記の表の通りとする

S3 Intelligent-Tieringの階層配置

オブジェクトサイズ オブジェクト数(年間アクセス率) Frequent層 Infrequent層 Archive層
1MB 630万(全体の0.58%がアクセスされる) 0% ※1 0.58% 99.42%

※1: 実際には微量(0.05%)がFrequent層に格納されるが、計算を簡易にするため0%と仮定

コスト比較

Glacier IRの方が、Intelligent-Tieringと比較して30%ほど安価になりました。

項目 Glacier IR Intelligent-Tiering
ストレージ料金
- 単価 $0.005/GB/月 階層別
・Frequent…$0.025/GB/月
・Infrequent…$0.0138/GB/月
・Archive…$0.005/GB/月
- Frequent (0GB) - $0/年
- Infrequent (36.5GB) - $6/年
- Archive (6,263.5GB) - $376/年
- 全体 (6,300GB) $378/年 $382/年
モニタリング料金
- 単価 - $0.0025/1,000オブジェクト/月
- 合計 (630万オブジェクト) $0 $189/年
取得リクエスト料金
- 単価 $0.01/1,000リクエスト $0.00037/1,000リクエスト
- 合計 (36,500リクエスト) $0.365/年 $0.014/年
データ取得料金
- 単価 $0.03/GB $0/GB
- 合計 (36.5GB) $1/年 $0/年
年間合計 $379 $571

なぜ「毎日100件アクセス」でもIntelligent-Tieringより安いのか?

2つのストレージクラスのコスト差を決めるのは下記の要素です。


取り出すデータ量が少ないことでGlacier IRのデータ取得料金が安くなるため

全データ6,300GBに対して、年間36.5GBしか取り出さないため、取り出し料金は誤差の範囲となります。

  • 年間36.5GB取り出し
  • 取り出し料金 = 36.5GB × $0.03 = $1/年


Intelligent-Tieringのモニタリングコストが高くなるため

Intelligent-Tieringには、アクセス頻度の監視のため、モニタリング料金が発生します。 オブジェクト数が多い場合、このコストが無視できません。

  • モニタリングコスト = $0.0025/1,000オブジェクト/月
  • 630万オブジェクト = $189/年



上記の2要素から、Glacier IRの方が有利になります。

オブジェクトサイズ・オブジェクト数による料金変動の比較

アクセス頻度1日100件固定のまま、データ総量が6.3TBのままになる範疇でオブジェクトサイズ・オブジェクト数を変動させた場合の利用料金を比較してみたところ、 下記のような結果になりました。

オブジェクトサイズ オブジェクト数 年間取り出し量 Glacier IR Intelligent-Tiering 差額
1MB(今回) 630万 36.5GB $379 $571 $192
10MB 63万 365GB $389 $435 $46
100MB 6.3万 3,650GB $485 $765 $280
1GB 6,300 36,500GB $1,447 $1,466 $19


■オブジェクトサイズが小さく数が多い場合(1MB~100MB)

  • 取り出しデータ量…小
  • モニタリング料金…大

Glacier IRが有利な結果になりました。


■オブジェクトサイズが大きく数が少ない場合(1GB)

  • 取り出しデータ量…大
  • モニタリング料金…小

Glacier IRが有利なことは変わらないものの、差異が少ない結果になりました。



各ケースの算出過程を見る

Intelligent-Tieringの階層配置

オブジェクトサイズ オブジェクト数(年間アクセス率) Frequent層 Infrequent層 Archive層
1MB 630万(全体の0.58%がアクセスされる) 0% ※1 0.58% 99.42%
10MB 63万(全体の5.8%がアクセスされる) 0% ※1 5.8% 94.2%
100MB 6.3万(全体の58%がアクセスされる) 0% ※1 58% 42%
1GB 6,300(全体の580%がアクセスされる=1オブジェクトあたり年5.8回) 50% ※2 50% ※2 0% ※2

※1: 実際には微量(0.05%~4.76%)がFrequent層に格納されるが、計算を簡易にするため0%と仮定
※2: 実際にはアクセスパターンにより変動するが、計算を簡易にするため均等配分(50%/50%)と仮定

計算式

※合計の小数点以下は切り捨て

1MB(630万オブジェクト):

Glacier IR:
  ストレージ: 6,300GB × $0.005 × 12 = $378
  取得リクエスト: 36,500 × $0.01 / 1,000 = $0.365
  データ取得: 36.5GB × $0.03 = $1.095
  合計: $379

Intelligent-Tiering:
  Infrequent層: 6,300GB × 0.58% × $0.0138 × 12 = $6
  Archive層: 6,300GB × 99.42% × $0.005 × 12 = $376
  モニタリング: 6,300,000 / 1,000 × $0.0025 × 12 = $189
  取得リクエスト: 36,500 × $0.00037 / 1,000 = $0.014
  合計: $571

10MB(63万オブジェクト):

Glacier IR:
  ストレージ: $378
  取得リクエスト: $0.365
  データ取得: 365GB × $0.03 = $10.95
  合計: $389

Intelligent-Tiering:
  Infrequent層: 6,300GB × 5.8% × $0.0138 × 12 = $60
  Archive層: 6,300GB × 94.2% × $0.005 × 12 = $356
  モニタリング: 630,000 / 1,000 × $0.0025 × 12 = $19
  取得リクエスト: $0.014
  合計: $435

100MB(6.3万オブジェクト):

Glacier IR:
  ストレージ: $378
  取得リクエスト: $0.365
  データ取得: 3,650GB × $0.03 = $106.9
  合計: $485

Intelligent-Tiering:
  Infrequent層: 6,300GB × 58% × $0.0138 × 12 = $604
  Archive層: 6,300GB × 42% × $0.005 × 12 = $159
  モニタリング: 63,000 / 1,000 × $0.0025 × 12 = $2
  取得リクエスト: $0.014
  合計: $765

1GB(6,300オブジェクト):

Glacier IR:
  ストレージ: $378
  取得リクエスト: $0.365
  データ取得: 36,500GB × $0.03 = $1,069
  合計: $1,447

Intelligent-Tiering:
  Frequent層: 6,300GB × 50% × $0.025 × 12 = $945
  Infrequent層: 6,300GB × 50% × $0.0138 × 12 = $522
  モニタリング: 6,300 / 1,000 × $0.0025 × 12 = $0.2
  取得リクエスト: $0.014
  合計: $1,466

補足:Glacier IRの最低保存期間について

Glacier IRには最低保存期間90日という制約があります。
オブジェクトを90日経過前に削除、上書き、または別のストレージクラスに移行した場合、残りの日数分のストレージ料金が日割りで課金されます。
そのため、頻繁に更新されるデータを格納する要件には不向きであることにご留意ください。

補足:Glacier IRと従来のGlacierのデータ取り出し方法の違いについて

本記事で比較したGlacier IRは、従来のGlacier(S3 Glacier Flexible Retrieval)とは異なり、復元(リストア)プロセスが不要です。
この違いにより、Glacier IRは頻繁にアクセスされる可能性があるデータにも適用できます。


従来のGlacier(S3 Glacier Flexible Retrieval)

■迅速取り出し(1~5分)で25日間復元する際のリクエスト実行例

  aws s3api restore-object \
    --bucket amzn-s3-demo-bucket \
    --key dir1/example.obj \
    --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Expedited"}}'


Glacier IR(S3 Glacier Instant Retrieval)

  • S3 Standardと同様に、復元なしで直接取得可能
  • ミリ秒単位でリアルタイムアクセス
  • S3 Standard、S3 Standard-IAと同じレイテンシ

結論(再掲)

  • Glacier IRは取り出すデータ量が少なければ、「四半期に一度」より頻繁にアクセスしても安いパターンもある。
  • AWS公式の想定ユースケースは目安なので、実際の数値で試算しましょう



どなたかの一助になれば幸いです。

前田 青秀(執筆記事の一覧)

2023年2月入社 技術4課改めCR課

AWS資格12冠

ジムに通い始めましたが、なるべく楽してマッチョになりたい…