AWS BillExplained
← トピック

「無料」の正体

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

ひとことで言うと

無料とは、回ったメーターに後から当てた値引きのこと。メーターは止まっていない。

なぜそうなるのか

AWS の請求書に「計測されていない」という意味での無料は存在しない。無料枠の使用量はきちんと計量され、値段が付き、そのうえでゼロに値引きされている。だから無料枠の利用でも明細行は出るし、無料枠には専用の usage type がある。BoxUsage:freetier.micro は EC2 のインスタンス時間だし、Resource-Invocation-Count-FreeTier は CloudFormation のハンドラ実行回数だ。課金しないと決めるためには、まず何をいくつ数えたかに名前を付ける必要がある。

これは言葉遊びではない。単価ゼロで回っているメーターは、リソース側が何ひとつ変わらないまま単価ゼロでなくなる。日付が過ぎた、月次の枠を使い切った、アカウントが organization に入った。変わるのは常にリソースの外側にある条件のほうだ。

無料には種類がある

15 年間、種類は 3 つだった。Always Free (毎月リセットされる枠。期限なし)、12 months free (サインアップ日から 12 か月)、short-term trial (サインアップ時ではなく、そのサービスを最初に使った時点から始まる短期トライアル)。そして 2025 年 7 月 15 日、AWS は入口そのものを作り直し、4 つ目の仕組みとしてクレジットを持ち込んだ。

いまの新規アカウントはサインアップ時にプランを選ぶ。どちらを選んでも USD $100 のクレジットがもらえ、さらにコンソール上の 5 つのアクティビティ (EC2・RDS・Lambda・Bedrock・Budgets) を 1 つ済ませるごとに $20 ずつ、最大 $100 が上乗せされる。クレジットの有効期限はプランに関係なくアカウント開設日から 12 か月。

  • Free plan。そもそも課金が発生しない。アカウント作成から 6 か月、またはクレジットを使い切った時点のどちらか早いほうで終了し、そこでアカウントは自動的にクローズされる。リソースにもデータにもアクセスできなくなる。AWS はコンテンツを 90 日保持するので、その間に Paid plan にアップグレードしなければ完全に削除される。有効なのは Always Free だけで、short-term trial も Savings Plans も Reserved Instances も使えない。AWS Organizations に参加するか Control Tower の landing zone を立てると自動的に Paid plan に変換され、クレジットは即座に失効する。
  • Paid plan。全サービスに加えて short-term trial も使える。クレジットは対象の利用に自動適用され、それを超えた分は通常のオンデマンド料金。アカウントはクローズされない。

消えたのは 12 か月枠だ。AWS は旧来の仕組みを Legacy Free Tier と呼び、12 months free の offer は「Legacy Free Tier の顧客のみが利用できる」と明言している。2025 年 7 月 15 日より前に開設したアカウントは残りの 12 か月分をそのまま保持する。それ以外のアカウントに残るのは、always free の枠と、トライアルと、時限付きのクレジット残高だけだ。無料枠対象のインスタンスタイプもこの日で分岐した。7 月 15 日より前のアカウントでは t2.micro と t3.micro、それ以降は t3.micro・t3.small・t4g.micro・t4g.small・c7i-flex.large・m7i-flex.large。

内側から外側への境界:

  1. always free の枠。ここを越えると: 毎月 $0.00。無料。 毎月リセット、繰り越しなし、期限なし
  2. short-term trial。ここを越えると: 一定期間だけ $0.00。無料。 初回利用で開始。サービス単位、多くはリージョン単位。Paid plan のみ
  3. Free Tier クレジット。ここを越えると: 残高が尽きるまで $0.00。無料。 サインアップで $100 + 獲得で最大 $100。開設から 12 か月で失効
  4. 請求書。ここを越えると: オンデマンド料金。 もう吸収するものがない。ここが定価

一番内側だけが無料。リングを1枚越えて外に出るたびに関所がある。

同じ計量済み使用量を囲む4枚の殻。外に出るたびに「誰がその請求を吸収するか」が変わるだけで、メーターが回ったかどうかは変わらない。

その無料枠は誰のものか

自分のアカウントのものではない。Free Tier Terms は、organization は「その中の 1 アカウント分の offer しか受けられない」と定め、offer をどれだけ消費したかは全アカウントの使用量を合算して判定すると書いている。無料枠は連結請求ファミリーにつき 1 つだ。

適用順も明記されている。「AWS は Savings Plans の適用より前に Free Tier の特典を適用する。Savings Plans は Free Tier がカバーしなかった超過分をカバーする」。つまり無料枠が食う分は、コミットメントとマッチングされる前にプールから抜けている。立ち上げ間もない organization で Compute Savings Plans の消化率が伸びない、地味だが実在する理由のひとつだ。

で、いくらなの

無料そのものは 0 円。値段が付くのはその外側に出た最初の 1 時間だ。以下はすべて us-east-1、オンデマンド、AWS Price List から。

  • t3.micro (Linux):1 時間 $0.0104。legacy アカウントが無料でもらえていた月 750 時間は、金額にすると約 $7.80。
  • パブリック IPv4 アドレス: 1 時間 $0.005。使用中でも遊休でも同じ単価。
  • EBS gp3:$0.08/GB-月。gp2 は $0.10、標準ティアのスナップショットは $0.05/GB-月。
  • インターネットへのデータ転送: $0.09/GB。price list はこの階層を「グローバル無料枠を超えた分の最初の 10 TB/月」と自ら記述している。
  • NAT Gateway:1 時間 $0.045 + 処理 1 GB あたり $0.045。無料枠は一切ない。

インターネット, パブリック IPv4, t3.micro, gp3 ルートボリューム を通る経路。1ホップずつ:

  • パブリック IPv4 (使用中でも遊休でも) は存在している間ずっと時間メーターで課金される。
  • t3.micro (計量してから値引き) は存在している間ずっと時間メーターで課金される。
  • gp3 ルートボリューム (30 GiB) は存在している間ずっとGBメーターで課金される。
  1. インターネット から パブリック IPv4: 受信リクエスト。課金されない。
  2. パブリック IPv4 から t3.micro: インスタンスへ。課金されない。
  3. t3.micro から gp3 ルートボリューム: ベースライン IOPS / スループット。課金されない。
  4. t3.micro から インターネット: レスポンス送出。GBメーターで課金、$0.09/GB。
us-east-1 の無料枠 t3.micro 1台。メーターは4つ、枠も4つ別々で、legacy アカウントなら全部が同じ日に切れる。GB 無料

always free の枠は毎月リセットされる数量で、使い残しについて Free Tier Terms は無慈悲に書いている。「月末に残った未使用分は翌月に繰り越されない」。実際によく当たるのはこのあたり。Lambda の 100 万リクエストと 400,000 GB 秒。Step Functions の 4,000 ステート遷移 (超えると Standard ワークフローは 1,000 遷移 $0.025)。DynamoDB の最初の 25 GB ストレージ。CloudWatch のカスタムメトリクスとアラーム各 10、API リクエスト 100 万、ログの取り込みとアーカイブが各 5 GB。

見え方は数字以上に悪い。AWS が Free Tier 使用量アラートを送るのはサービスごとの枠の 85% を超えたときで、宛先はルートユーザーのメールアドレス。単体アカウントではデフォルトで有効だが、organization の管理アカウントではデフォルトで無効だ。ファミリーで唯一の無料枠を持っている、まさにそのアカウントで。Billing コンソールにはサービス別・リージョン別・usage type 別の Free Tier ページと、その裏の GetFreeTierUsage API がある。EC2 コンソールの無料枠ボックスはリアルタイムではなく、AWS 自身が「1 日 3 回更新」と書いている。

例外と罠

無料のリソースは有料のリソースを引きずってくる。 無料枠の EC2 インスタンスは、無料枠のシステムではない。外から届くにはパブリック IPv4 アドレスが要り、そのアドレスは付いていようが遊休だろうが 1 時間 $0.005 で回る。AWS は 2024 年 2 月 1 日に使用中パブリック IPv4 の月 750 時間を EC2 無料枠へ追加したが、遊休 Elastic IP は最初から対象外だし、無条件で無料なのは BYOIP で持ち込んだ自前アドレスだけだ。ルートボリュームは別枠の 30 GB、スナップショットはさらに別枠の 1 GB を食い、スナップショットは作った元のインスタンスより長生きする。IPv4 課金を避けようとプライベートサブネットへ移せば、代わりに買ったことになるのは NAT Gateway だ。こちらは無料枠ゼロで、しかもメーターが 2 本同時に回る。

枠にはグローバルなものとリージョン単位のものがあり、見た目では区別が付かない。 Free Tier Terms は「使用量は全 AWS リージョンを合算して計算する」と書き、月 100 GB の無料データ転送も「全 AWS サービスと全リージョンを合算 (中国と GovCloud を除く)」だ。ところがトライアルは逆の数え方をする。Amazon Detective の 30 日無料トライアルは「アカウントごと・リージョンごと」に付与されるし、Security Hub のトライアル枠はアカウントごと・リージョンごとに月 10,000 findings。6 リージョンでトライアル対象サービスを有効化すれば、6 本の独立した時計が動き出し、6 つの違う日付で切れる。

サービスが無料でも、そのバイトまで無料とは限らない。 Lambda の枠は always free だが、料金ページはこう書いている。「関数が実行されたリージョンの外から Lambda 関数へ出入りするデータは、Amazon EC2 のデータ転送料金で課金される」。同一リージョン内の S3・DynamoDB・SQS・SNS・EFS・ECR などとの通信は無料。リージョン境界を越えた分はそうではなく、しかもそれは organization 内の他の全サービスが同時に削っている、あの共有 100 GB を削りにいく。

同じサービスが「無料」を 2 つの意味で使うこともある。 CloudFront の従量課金モデルには、いまも always free の月 1 TB データ転送と 1,000 万リクエストがある。並行して提供されている定額プランのほうには月 $0 の Free ティアがあり、こちらは 1 ディストリビューションあたり 100 万リクエストと 100 GB。しかも超過時の挙動が反転する。プランの枠を超えた場合「パフォーマンスが低下することはあるが、超過課金は発生しない」と AWS は書いている。同じ単語、同じサービス、桁の違う枠、まったく違う壊れ方。

崖では何も止まらないし、崖の形はいつサインアップしたかで変わる。 legacy アカウントの 12 か月はカレンダー上の日付で終わる。インスタンスは動き続け、usage type も変わらず、ゼロだった単価がゼロでなくなるだけだ。85% アラートが追っているのは月次の枠であって期間の終わりではないので、この崖では鳴らない。新モデルのアカウントではもっと悪い。Free plan はクレジットか 6 か月のどちらかを使い切った時点でアカウントごとクローズされ、リソースとデータへのアクセスを道連れにする。Paid plan では、クレジットが尽きるまで超過分を黙って吸収し続ける。かつては目に見える課金として届いていた $1 の使い過ぎが、いまはただ残り時間を削るだけになる。

出典