AWS BillExplained
← トピック

「外」はどこから外なのか

  • 時間課金されない
  • GB課金される
  • 個数課金されない

ひとことで言うと

転送課金はインターネットの話じゃない。どのリングを越えたかの話だ。

なぜそうなるのか

ほとんどの人は境界を1枚だと思っている。AWS の中か、インターネットか。想定外の請求が生まれるのはこのモデルのせいで、実際にはリングは4枚あり、そのうち3枚は越えると金が出る。

リングは入れ子になっていて、それぞれが外向きにだけ関所になっている。内向きに落ちてくる分 — 届くリクエストや、外側のリングから返ってくるレスポンス — はそれ単体では課金されない。

インターネット$0.09/GB全サービス合算で月100GBまで無料別リージョン変動レートは送信元と宛先の組み合わせ次第同一リージョンの別 AZ$0.01/GB各方向に課金同一 AZ / プライベート IP$0.00無料なのはここだけ一番内側だけが無料。リングを1枚越えて外に出るたびに関所がある。
外に越えることが課金。レートを決めるのは物理的な距離ではなく、何枚のリングを抜けたか。

設計で狙う価値があるのは一番内側のリングだ。同一 AZ 内でプライベート IP 経由なら無料。1枚外に出た瞬間に 1GB あたり1セント、しかも往復で発生する。おしゃべりなマルチ AZ のサービスメッシュが、気づくと請求書の1行になっているのはこれが理由。

で、いくらなの

上の図でリージョン間を「変動」と書いたのは手抜きではない。リージョン間転送に単一のレートは存在しない。AWS は送信元と宛先のペアごとに値付けしているので、正しい答えは「自分の2つのリージョンを引く」しかない。

そもそもレート表より usage type のほうが実用的だ。Cost Explorer で実際に検索できるのはこっちだから。

  • <Region>-DataTransfer-Out-Bytes — インターネットへ出ていく分。USE2-DataTransfer-Out-Bytes ならオハイオからインターネット。リージョン接頭辞がない usage type は us-east-1 を指す。
  • <Region>-DataTransfer-Regional-Bytes — 同一リージョン内の AZ 跨ぎ。1回の転送につき2本立つと思っておく。

インターネットから入ってくる分の usage type は存在しない。課金されないので、数える必要がないからだ。

例外と罠

「VPC から出てないから大丈夫」は通用しない。 AZ の境界は VPC の内側にある。us-east-1a のプライベートサブネットが us-east-1b のプライベートサブネットと喋った時点で関所を1枚越えている。パブリック IP も Internet Gateway も一切通っていなくても、だ。

途中の装置は、距離とは別に金を取る。 転送課金が「距離代」なら、NAT Gateway・Transit Gateway・インターフェースエンドポイント・ロードバランサはそれぞれ「関所代」を GB 単位で上乗せしてくる。しかもこっちは方向を問わない。インターネットからの inbound は無料でも、NAT Gateway を通る inbound は無料ではない

AZ 跨ぎのリクエスト$0.01/GBAZ 跨ぎのレスポンス$0.01/GBサービス Aus-east-1aサービス Bus-east-1b
AZ が1枚違うだけの2つのリソース。パブリックなものは何もないのに、転送は2回課金される。GB 無料

無料枠が最初の症状を隠す。 インターネット向け転送の月100GB無料は、全 AWS サービス・全リージョンを合算した枠だ。小さいワークロードなら転送課金を一度も見ずに済むくらい太い。だからこそ初めて超えた月に、請求書が「何か壊れた」ように見える。