Amazon RDSの料金は、インスタンス時間・ストレージ・バックアップの3つに、延長サポートとIOPSの追加分が乗って決まります。この記事では、東京リージョンのRDS for MySQL/PostgreSQLの単価をAWS Price List APIの2026年9月24日版から取り出し、月額を計算するPythonコードと3つの構成の試算結果を載せました。MySQL 8.0は2026年8月1日から延長サポート課金が自動で始まっており、放置すると小規模な本番DBでも請求が約3倍になります。停止中にかかる費用、gp3ストレージの400GiBの境目、リザーブドインスタンスとDatabase Savings Plansの選び分けまで、実額で判断できるように整理します。
まとめ:東京リージョンのRDS料金を決める課金項目と延長サポートの要点
RDSの月額の大半はインスタンス時間です。東京リージョンのdb.t4g.mediumはSingle-AZで0.101USD毎時、Multi-AZで0.202USD毎時で、Multi-AZはちょうど2倍になります。gp3ストレージは1GBあたり月0.138USD(Multi-AZは0.276USD)です。サービスの位置づけや対応エンジンの全体像はAmazon RDSとは?仕組み・対応エンジンと料金モデル・採用判断で解説しているので、本記事は金額の計算に絞ります。
いま最も請求を押し上げているのは延長サポートです。RDS for MySQL 8.0は2026年7月31日で標準サポートが終わり、翌日から1vCPUあたり毎時0.12USDが加算されています。PostgreSQL 13も2026年3月1日から同じ単価です。まず自社のDBが対象かをCLIで確かめ、8.4やPostgreSQL 16以降へ上げる計画を立ててください。
単価を下げる手段は2つあります。24時間365日動かす本番DBはリザーブドインスタンスの3年全額前払いで約47%下がります。インスタンスファミリーを変える予定があり、第7世代以降(m7g・r7gなど)を使うなら単価を下げる契約の候補はDatabase Savings Plansです。開発用のDBは停止しても7日で自動起動するため、夜間停止より削除とスナップショット復元のほうが確実に安くなります。
東京リージョンのRDS単価とPrice List APIで確かめる課金項目
Amazon RDSの料金ページは料金表をブラウザ側で描画するため、単価をそのまま機械的に読み取れません。AWSが公開しているPrice List Bulk APIのオファーファイルなら、認証なしでリージョン別の単価をJSONで取得できます。
インスタンスとストレージの単価をPythonで得るPrice List APIの手順
東京リージョン(ap-northeast-1)のRDSのオファーファイルは約25MBあります。次のコードはPython 3の標準ライブラリだけで動き、MySQLのdb.t4g.mediumとgp3、バックアップ、延長サポートの単価を表示します。
# 東京リージョンのRDS for MySQL単価をAWS Price List APIから取得する(Python 3標準ライブラリのみ・約25MB)
import json, urllib.request
BASE = "https://pricing.us-east-1.amazonaws.com"
def get(path):
with urllib.request.urlopen(BASE + path, timeout=300) as r:
return json.load(r)
idx = get("/offers/v1.0/aws/AmazonRDS/current/region_index.json")
offer = get(idx["regions"]["ap-northeast-1"]["currentVersionUrl"])
print("version", offer["version"])
WANT = {
"APN1-InstanceUsage:db.t4g.medium", "APN1-Multi-AZUsage:db.t4g.medium",
"APN1-RDS:GP3-Storage", "APN1-RDS:Multi-AZ-GP3-Storage",
"APN1-RDS:ChargedBackupUsage", "APN1-ExtendedSupport:Yr1-Yr2:MySQL8.0",
}
for sku, p in offer["products"].items():
a = p["attributes"]
if a.get("usagetype") not in WANT or a.get("databaseEngine") != "MySQL":
continue
for term in offer["terms"]["OnDemand"].get(sku, {}).values():
for dim in term["priceDimensions"].values():
print(a["usagetype"], dim["unit"], dim["pricePerUnit"]["USD"])
# 出力例(version 20260924211011)
# APN1-RDS:ChargedBackupUsage GB-Mo 0.0950000000
# APN1-ExtendedSupport:Yr1-Yr2:MySQL8.0 vCPU-hour 0.1200000000
# APN1-RDS:GP3-Storage GB-Mo 0.1380000000
# APN1-RDS:Multi-AZ-GP3-Storage GB-Mo 0.2760000000
# APN1-Multi-AZUsage:db.t4g.medium Hrs 0.2020000000
# APN1-InstanceUsage:db.t4g.medium Hrs 0.1010000000
東京の課金項目は APN1- で始まる usagetype で区別されます。PostgreSQLの単価を見るときは databaseEngine の比較を “PostgreSQL” に変えてください。今回取得したクラスでは、MySQLとPostgreSQLの時間単価はすべて同額でした。
| インスタンスクラス | vCPU/メモリ | Single-AZ(USD/時) | Multi-AZ(USD/時) | Single-AZの月額(730時間) |
|---|---|---|---|---|
| db.t4g.micro | 2/1GiB | 0.025 | 0.050 | 18.25USD |
| db.t4g.medium | 2/4GiB | 0.101 | 0.202 | 73.73USD |
| db.m7g.large | 2/8GiB | 0.234 | 0.468 | 170.82USD |
| db.r7g.large | 2/16GiB | 0.287 | 0.574 | 209.51USD |
どのクラスも「Multi-AZは単価が2倍」です。可用性のためにMulti-AZを選ぶと、インスタンスもストレージも倍額になると覚えておけば見積もりを外しません。なお、Multi-AZの複製で発生するAZ間のデータ転送は、料金ページに無料と明記されています。
gp3ストレージ・IOPS・バックアップの東京単価と400GiBで変わる性能の基準値
ストレージの単価は容量だけでなく、性能の追加分でも変わります。gp3はRDSのストレージ仕様で、MySQLとPostgreSQLの場合は400GiB未満なら3,000 IOPS・125MiB/sが基準値として含まれ、IOPSの追加はできません。400GiB以上になると4本のボリュームに分散され、基準値が12,000 IOPS・500MiB/sへ上がり、その先を追加で買えるようになります。
| 課金項目(東京) | Single-AZ | Multi-AZ |
|---|---|---|
| gp3ストレージ | 0.138USD/GB-月 | 0.276USD/GB-月 |
| gp3の追加IOPS(400GiB以上) | 0.024USD/IOPS-月 | 0.048USD/IOPS-月 |
| gp3の追加スループット | 0.096USD/MiBps-月 | 0.192USD/MiBps-月 |
| io2ストレージ/IOPS(USD) | 0.15/GB-月・0.12/IOPS-月 | 0.30/GB-月・0.24/IOPS-月 |
| 無料割当を超えたバックアップ | 0.095USD/GB-月 | |
| スナップショットのS3エクスポート | 0.012USD/GB | |
| RDS Proxy | 0.018USD/対象インスタンスのvCPU-時間 | |
io2は容量単価こそgp3と近いものの、IOPSを1,000単位で割り当てると月額が跳ねます。OLTPで1ms未満の遅延が要件にない限り、gp3から始めるのが妥当です。磁気ストレージは新規作成できず、2026年7月1日以降はスナップショットを磁気ストレージへ復元することもできなくなりました。接続数が多いLambda構成でProxyを検討している場合は、RDS Proxyの料金と接続プールの仕組みで課金の詳細を確認してください。
月額をPythonで試算する手順と開発・小規模本番・中規模本番の3構成
単価がそろったら、構成ごとの月額を計算します。AWSの料金計算ツールと同じく、1か月を730時間として扱います。
インスタンス・ストレージ・延長サポートを合算するPythonの月額試算コード
# RDS for MySQL/PostgreSQLの月額を東京リージョン単価(2026年9月24日版)で試算する
HOURS = 730 # 1か月の時間数(AWSの料金計算ツールと同じ前提)
INSTANCE = { # USD/時間(Single-AZ, Multi-AZ)
"db.t4g.micro": (0.025, 0.050),
"db.t4g.medium": (0.101, 0.202),
"db.m7g.large": (0.234, 0.468),
"db.r7g.large": (0.287, 0.574),
}
VCPU = {"db.t4g.micro": 2, "db.t4g.medium": 2, "db.m7g.large": 2, "db.r7g.large": 2}
GP3_GB = (0.138, 0.276) # USD/GB-月
GP3_IOPS = (0.024, 0.048) # 400GiB以上で基準値を超えた分のIOPS-月
BACKUP_GB = 0.095 # 無料割当を超えたバックアップのGB-月
EXT_SUPPORT = {"yr1-2": 0.12, "yr3": 0.24} # USD/vCPU-時間
def monthly(cls, multi_az, storage_gb, extra_iops=0, backup_over_gb=0, ext=None):
i = 1 if multi_az else 0
cost = {
"instance": INSTANCE[cls][i] * HOURS,
"storage": GP3_GB[i] * storage_gb,
"iops": GP3_IOPS[i] * extra_iops,
"backup": BACKUP_GB * backup_over_gb,
}
if ext: # 延長サポートはMulti-AZのスタンバイにも掛かる
cost["ext_support"] = EXT_SUPPORT[ext] * VCPU[cls] * HOURS * (2 if multi_az else 1)
cost["total"] = sum(cost.values())
return {k: round(v, 2) for k, v in cost.items()}
print("開発", monthly("db.t4g.micro", False, 20))
print("小規模本番", monthly("db.t4g.medium", True, 100, backup_over_gb=50))
print("小規模本番+MySQL8.0延長", monthly("db.t4g.medium", True, 100, backup_over_gb=50, ext="yr1-2"))
print("中規模本番", monthly("db.m7g.large", True, 500, extra_iops=4000))
単価の辞書を書き換えれば、別のクラスやPrice List APIの新しい版にもそのまま使えます。延長サポートの行で 2 if multi_az else 1 としているのは、延長サポートの課金規則が「Multi-AZのスタンバイにも課金する」と定めているためです。
開発21USD・小規模本番180USD・中規模本番672USDになる月額の内訳
表の構成条件は、開発がt4g.micro・Single-AZ・gp3 20GB、小規模本番がt4g.medium・Multi-AZ・gp3 100GB、中規模本番がm7g.large・Multi-AZ・gp3 500GB・16,000 IOPSです。各行の金額は、この構成ごとに課金項目を分けて示しています。
| 構成 | インスタンス | ストレージ | IOPS・バックアップ | 延長サポート | 月額合計 |
|---|---|---|---|---|---|
| 開発:t4g.micro | 18.25 | 2.76 | 0 | 0 | 21.01USD |
| 小規模本番:t4g.medium | 147.46 | 27.60 | 4.75 | 0 | 179.81USD |
| 同上でMySQL 8.0のまま | 147.46 | 27.60 | 4.75 | 350.40 | 530.21USD |
| 中規模本番:m7g.large | 341.64 | 138.00 | 192.00 | 0 | 671.64USD |
小規模本番の例では、MySQL 8.0のまま動かしているだけで月額が179.81USDから530.21USDへ上がります。インスタンス本体より延長サポートのほうが高い、という逆転が起きます。
中規模本番では、500GBにして基準値12,000 IOPSを得たうえで4,000 IOPSを追加した想定です。IOPSの追加分192USDはストレージ容量の費用138USDを上回ります。性能不足をIOPSの追加で解決する前に、スロークエリの解消やリードレプリカへの読み込みの分離で足りないかを確かめてください。レプリカの作り方はリードレプリカの作成手順と読み書き分離の実装にまとめています。
延長サポート課金で請求が跳ねるMySQL 8.0とPostgreSQL 13の条件
2026年9月時点で、RDSの請求を最も大きく変える要因は延長サポートです。競合の料金解説ではほとんど扱われていないため、ここで詳しく確認します。
MySQL 8.0は2026年8月1日から1vCPUあたり毎時0.12USDが自動で加算
RDS for MySQLのバージョン一覧によると、MySQL 8.0は2026年7月31日に標準サポートを終え、8月1日から延長サポートの1年目の料金が始まりました。2028年8月1日からは3年目の料金になり、単価が毎時0.24USDへ倍増します。延長サポート自体は2029年7月31日で終わり、その後は自動でメジャーバージョンアップされます。
| エンジン | 標準サポート終了 | 1年目料金の開始 | 3年目料金の開始 | 延長サポート終了 |
|---|---|---|---|---|
| MySQL 8.0 | 2026-07-31 | 2026-08-01 | 2028-08-01 | 2029-07-31 |
| MySQL 8.4 | 2029-07-31 | 2029-08-01 | 2031-08-01 | 2032-07-31 |
| PostgreSQL 13 | 2026-02-28 | 2026-03-01 | 2028-03-01 | 2029-02-28 |
| PostgreSQL 14 | 2027-02-28 | 2027-03-01 | 2029-03-01 | 2030-02-28 |
PostgreSQLの日付はRDS for PostgreSQLのリリースカレンダーによります。課金はvCPU単位なので、db.t4g.microのような小さなクラスほど影響が大きくなります。t4g.microもvCPUは2つあるため、延長サポートは月175.20USDです。インスタンス本体の18.25USDの約9.6倍になります。
PostgreSQL 14を使っている場合は、2027年2月28日が次の期限です。拡張機能の互換性確認まで含めると半年はかかるため、今年度のうちに移行先の版を決めておくことを勧めます。PostgreSQL側の運用上の注意点はRDS for PostgreSQLの延長サポート課金とDMS移行でも扱っています。
延長サポート対象のDBをAWS CLIで洗い出して課金を止めるまでの手順
まず、アカウント内のDBインスタンスのエンジン版と延長サポートの登録状態を一覧にします。describe-db-instancesの出力には EngineLifecycleSupport が含まれます。
# 東京リージョンの全DBインスタンスについて、エンジン版・クラス・Multi-AZ・延長サポートの登録状態を表示する
aws rds describe-db-instances \
--region ap-northeast-1 \
--query "DBInstances[].[DBInstanceIdentifier,Engine,EngineVersion,DBInstanceClass,MultiAZ,EngineLifecycleSupport]" \
--output table
# 新しく作るDBでは延長サポートへの自動登録を無効にしておく(標準サポート終了後の課金を防ぐ)
aws rds create-db-instance \
--db-instance-identifier app-db-dev \
--engine mysql --engine-version 8.4 \
--db-instance-class db.t4g.micro \
--allocated-storage 20 --storage-type gp3 \
--master-username admin --manage-master-user-password \
--engine-lifecycle-support open-source-rds-extended-support-disabled \
--region ap-northeast-1
EngineVersion が8.0や13で始まり、EngineLifecycleSupport が open-source-rds-extended-support になっている行が課金対象です。作成時の設定手順のとおり、作成時に無効を指定すれば延長サポートに入りません。
注意が要るのは既存のDBです。標準サポートが終わったDBで、modify-db-instanceを使って登録を無効にすると、次のサポート対象メジャーバージョンへ自動で上がります。アプリの互換性を確かめないまま設定だけ変えると、本番DBが予告なく8.4へ上がります。スナップショットから検証用DBを復元し、8.4へ上げてアプリの結合テストを通してから本番に適用する順番を守ってください。自社でこの作業の工数を確保できない場合は、データベース設計・移行支援でバージョンアップの計画から検証まで請け負っています。
停止中とストレージの設定で見落としやすいRDSの課金条件と対策
「使っていないのに請求が来る」相談の多くは、停止とストレージの仕様を取り違えたことが原因です。
停止中もストレージとIOPSは課金され7日後に自動で起動するRDSの仕様
DBインスタンスの一時停止の説明では、停止中はインスタンス時間が課金されない一方で、割り当てたストレージ(Provisioned IOPSを含む)とバックアップは課金が続くとしています。パブリックアクセスを有効にしている場合は、公開IPv4アドレスの料金もかかります。
もう1つの落とし穴が期間です。停止できるのは連続7日までで、それを過ぎるとRDSが自動で起動します。停止したまま忘れると、8日目から通常どおりインスタンス時間が課金されます。リードレプリカを持つDBや、リードレプリカ自体は停止できません。
1か月以上使わない開発用DBは、停止ではなくスナップショットを取って削除するほうが安く済みます。gp3 20GBのDBなら停止中も月2.76USDのストレージ費が続きます。削除すればインスタンスとストレージの課金は止まり、残るのは無料割当を超えたスナップショットの保存料金(0.095USD/GB-月)だけです。
io1で3,000 IOPSを割り当てると停止中でも月360USDかかる計算
停止中の課金で最も高くつくのはProvisioned IOPSです。東京リージョンのio1はSingle-AZで0.12USD/IOPS-月なので、3,000 IOPSを割り当てると、DBを止めていてもIOPSだけで月360USDになります。classmethodが公開した停止したRDSで1週間に140USD課金された事例も、io1のIOPS課金が原因でした。
検証用のDBではio1・io2を選ばず、gp3の400GiB未満で作るのが安全です。gp3なら3,000 IOPSが容量の料金に含まれるため、IOPSの追加料金は発生しません。月ごとの内訳はAWS Cost Explorerでのコスト分析で、使用タイプ別に確認できます。
リザーブドインスタンスとDatabase Savings Plansで単価を下げる判断基準
24時間動かす本番DBは、割引の購入で単価を下げられます。選択肢はリザーブドインスタンスとDatabase Savings Plansの2つです。
r7g.largeの3年全額前払いで47%下がるリザーブドインスタンスの割引率
Price List APIのReserved条件から、東京リージョンのSingle-AZの実効時間単価を計算しました。前払い額は契約期間の時間数で割っています。
| クラス(Single-AZ) | オンデマンド | 1年・前払いなし | 1年・全額前払い | 3年・全額前払い |
|---|---|---|---|---|
| db.t4g.medium | 0.101 | 0.0786(22%減) | 645USD(約27%減) | 1,298USD(約51%減) |
| db.r7g.large | 0.287 | 0.2209(23%減) | 1,835USD(約27%減) | 3,996USD(約47%減) |
r7g.largeの1年全額前払い1,835USDは、オンデマンドの約6,394時間分です。約8.8か月以上動かし続けるDBなら元が取れます。今回取得したデータに3年・前払いなしの条件はありませんでした。リザーブドはクラスのファミリーとリージョン、エンジンを固定する契約なので、1年以内にクラスを変える予定があるDBには買いません。購入前の試算方法はリザーブドインスタンスの購入判断と適用条件で詳しく扱っています。
t4gが対象外になるDatabase Savings Plansの第7世代以降という条件
2025年12月に始まったDatabase Savings Plansは、1年・前払いなしで最大35%割り引かれ、エンジン・ファミリー・サイズ・リージョンをまたいで自動適用されます。RDSからAuroraへ移っても割引が続く点がリザーブドとの違いです。
ただしSavings PlansのFAQには、対象は第7世代以降のインスタンスと書かれています。db.t4gやdb.m6g、db.r6gは割引を受けられません。同じワークロードでリザーブドと併用することもできません。判断は次のとおりです。
- t4g・m6g・r6gの本番DB:リザーブドインスタンスを買う
- m7g・r7g以降で、1年以内にクラス変更やAurora移行の予定がある:Database Savings Plansを買う
- m7g・r7g以降で、3年間構成を変えない:リザーブドの3年全額前払いのほうが割引率は大きい
- 稼働が月の7割未満のDB:どちらも買わず、オンデマンドのまま停止や削除で調整する
Auroraへの移行を検討している場合は、料金モデルの違いをAmazon Auroraの仕組みとRDSとの違いで先に確認してください。
よくある質問
RDSの料金について、見積もりの段階でよく出る質問に答えます。
AWS RDSは無料で使えますか?
2025年7月15日より前に作ったアカウントは、料金ページに記載のとおり、対象のSingle-AZインスタンスを月750時間まで最大12か月無料で使えます。それ以降に作ったアカウントは、最大200USDのクレジットと6か月の無料プランの仕組みに変わりました。RDSの利用もこのクレジットから差し引かれます。期限と範囲はAWSを無料で使える範囲と6か月の期限で確認してください。
MySQLとPostgreSQLで料金は違いますか?
東京リージョンでは、今回取得したdb.t4g・db.m7g・db.r7gの各クラスで、時間単価はMySQLとPostgreSQLで同額でした。ストレージとバックアップの単価も同じです。差が出るのは延長サポートの時期で、PostgreSQL 13は2026年3月から、MySQL 8.0は2026年8月から課金されています。エンジンの選び方はAWSのDBサービス11種の選び方を参考にしてください。
RDSを停止すれば料金はかかりませんか?
インスタンス時間は止まりますが、ストレージ、Provisioned IOPS、バックアップ、公開IPv4アドレスの料金は続きます。さらに7日を過ぎると自動で起動するため、インスタンス時間も再び課金の対象です。長期間使わないなら、最終スナップショットを取ってから削除し、必要なときに復元するほうが確実に安くなります。
延長サポートの料金はいつまでかかりますか?
標準サポート中のメジャーバージョンへ上げるか、DBを削除した時点で止まります。上げた先の版が将来また標準サポートを終えれば、その時点から課金が再開します。MySQL 8.4の標準サポートは2029年7月31日までです。延長サポートは最長3年で、期限を過ぎるとRDSが自動でメジャーバージョンアップします。
EC2にMySQLを入れたほうが安くなりますか?
インスタンスの時間単価だけならEC2のほうが安い場合があります。ただしRDSの料金に含まれる運用は、自動バックアップ、パッチ適用、Multi-AZのフェイルオーバーです。これらを自前で組むと、構築と監視の工数がかかります。DBAを置けない体制なら、RDSの差額は運用の外注費として見合うことが多い、というのが実務上の判断です。
関連記事
- Amazon RDSとは?仕組み・対応エンジンと料金モデル・採用判断を実装者目線で解説:RDSの位置づけと料金モデルの総論
- Amazon RDS for PostgreSQLとは?マルチAZ構成・拡張機能の統制と延長サポート課金・DMS移行を実装目線で解説:PostgreSQLの延長サポートと移行手順
- リザーブドインスタンスの購入判断と適用条件|AWS CLIで割引を試算する手順:本番DBの割引購入の判断
- RDS Proxyとは?対応エンジン・料金・接続プールの仕組みと導入手順を解説:Proxyの付帯課金
- DynamoDBの料金を東京リージョンの実額で試算する:請求が跳ねる設計と単価の下げ方:NoSQL側の単価内訳と比較