TT Lab
はじめる
学ぶ 学習パス コース

オブジェクトストレージとS3

イグレスが請求書を作る

TT Labで続きを見る

一言でいうと

S3スタンダードの保存は、1GBあたり約0.023ドルです。それをインターネットに一度出すと、1GBあたり0.09ドルが上乗せされます。保存は撒き餌です。

なぜ必要なのか

数字で見ると明確です。1TBを1か月保存するコストは、約23ドルです。その1TBをインターネットに一度出すと、90ドルが追加されます。保存したものを4回読むだけで、保存コストより転送コストのほうが大きくなります。

実際のワークロードで計算すると、さらに極端です。1TBの保存と、月10TBの送信なら、S3は保存23ドル+送信900ドル=約925ドルです。同じワークロードを、イグレスが無料のストレージに置けば、保存コストしかかかりません。筆者が計算したR2基準では15ドルで、差は約54倍です。

この構造を知らずに設計すると、アーキテクチャより先に、請求書が壊れます。

どう動くのか

コストは、4つの軸に分かれます。

保存コストは、GB-月の単価です。S3スタンダードは、最初の50TBが1GBあたり0.023ドルで、階層が下がるほど安くなります。Glacier Deep Archiveは、1GBあたり0.00099ドルまで下がります。スタンダードの約4%です。

リクエストコストは、PUT/GETの件数あたりでかかります。小さなファイルが数百万個あるワークロードでは、この項目が保存コストを超えることがあります。

転送コストが、先ほど見たイグレスです。AWSは、S3だけが高いのではなく、EC2、RDS、NAT Gatewayのすべてが同じ構造です。

取り出しコストは、コールドティアにだけかかります。Glacier系は、保存が安い代わりに、取り出すときにGBあたりの料金と待ち時間がかかります。

ライフサイクルルールが、この4つの軸を扱う道具です。ルールは、プレフィックスやタグで対象を選び、何日後にどの階層へ移すか、または削除するかを決めます。ログを例にすると、30日後に低頻度階層、90日後にアーカイブ、365日後に削除、といった具合です。

現場での姿

階層の移動にもコストがあるという点は、よく見落とされます。移行リクエストごとに料金がかかるため、ごく小さなオブジェクトを数百万個アーカイブに移すと、移行コストが節約分より大きくなることがあります。AWSが、128KB未満のオブジェクトの移行を推奨しない理由です。

それから、最小保存期間があります。Glacier系には、90日または180日の最小課金期間があるので、30日で削除しても、残りの期間の料金がそのまま請求されます。「アーカイブに移して、すぐ消す」は、最悪の組み合わせです。

セルフホスティングに移す判断も、この計算から出てきます。イグレスが大きいワークロードは、自前のストレージのハードウェアコストを、数か月で回収します。反対に、保存量は大きいのにほとんど読まないデータは、クラウドのコールドティアが圧倒的に安いです。

ストレージクラスを移すときについてくる条件

ライフサイクルルールで安いクラスに移すのは簡単そうに見えますが、3つの制約があります。

制約 内容 見落とすと
最小保存期間 IA 30日、Glacier 90日、Deep Archive 180日 早く削除しても、その期間分は課金される
最小オブジェクトサイズ IA系は128KB未満でも128KBとして課金 小さなファイルが多いと、かえって高くなる
移行リクエストコスト オブジェクトごとの移行リクエスト料金 数百万個を移すと、それ自体が大金になる

2つ目が、特に罠です。ログの断片やサムネイルのように、数十KBのファイルが数百万個あると、IAに移して保存単価は下がっても、128KBに切り上げて課金されるため、総額が上がります。小さなファイルは、まとめて1つにする方が、はるかに大きな節約になります。

3つ目も計算します。500万個を移行すると、移行リクエストだけで数十ドルが出ていき、それが数か月分の節約額を食います。少なく、大きく、まれに移すことが原則です。

何がイグレスなのか

同じリージョンの中だからといって、すべてが無料ではありません。境界を正確に知っておく必要があります。

같은 리전 · 같은 AZ  → 대개 무료
같은 리전 · 다른 AZ  → AZ 간 요금 (양방향)
같은 리전 · VPC 엔드포인트 경유 → 무료 또는 저렴
다른 리전            → 리전 간 요금
인터넷·CDN 원본 요청  → 가장 비싸다

Kubernetesで、Podがどのアベイラビリティゾーン(AZ)に立ち上がるかを気にしないと、S3のゲートウェイエンドポイントがない状態では、NATゲートウェイを通って、インターネットに出てから戻ってきます。NATの処理料金とイグレスが、一緒にかかります。ゲートウェイエンドポイントを1つ作れば、この経路がなくなり、料金もなくなります。

料金を実際に確認する方法

推定せず、実測します。

次のクイズで確認すること

このモジュールは、概念だけを扱います。ライフサイクルルールの適用は、前のバージョニングのラボですでに扱いました。次のモジュールで、小さなファイルのワークロードを2つのストレージに入れて、特性を直接比較します。