giip
SES案件登録
AWSコストサイジングストレージRDSEBS

AWSのデータベースコストを見直すときに確認する項目

公開日 2026-08-13 · 更新日 2026-08-13 · 最終検証日 2026-08-13

結論

確認は影響の小さい順に進めます。(1)使っていないリソースの停止・削除、(2)実測に基づくright-sizing、(3)ストレージ種別とプロビジョニング量の見直し、(4)バックアップとスナップショットの棚卸し、(5)非本番環境のMulti-AZと稼働時間、(6)使用量が安定してからのSavings Plans/リザーブドインスタンス、の順です。削減額と削減率は構成ごとに全く異なるため、最初の作業はCost Explorerで自社のコスト内訳を出すことです。

この文書の適用条件

対象製品Amazon RDS / Amazon Aurora / Amazon EBS / AWS Cost Explorer
確認バージョンAWS CLI v2 / Amazon RDS・Amazon EC2・AWS Cost Explorer の公開API(2026-08-13 時点の仕様に基づく)
適用環境AWS
必要権限参照は `rds:DescribeDBInstances`・`rds:DescribeDBSnapshots`・`ec2:DescribeVolumes`・`ec2:DescribeSnapshots`・`ce:GetCostAndUsage`。削除操作は対応する Delete 権限
実行影響一覧コマンドは影響なし。削除・変更コマンドは元に戻せない場合がある
再起動ストレージ種別変更・インスタンスクラス変更を行う場合は必要
最終検証日2026-08-13

そのまま実行できるコマンド

どのサービスに費用がかかっているかを月次で出す(最初に実行する)参照のみ
対象
AWS Cost Explorer API(AWS CLI v2)
権限
ce:GetCostAndUsage
変更作業
なし(参照のみ)
Production実行
可能
# 対象: AWS Cost Explorer API(AWS CLI v2)
# 権限: ce:GetCostAndUsage
# 変更作業: なし(参照のみ)
# Production 実行: 可能
aws ce get-cost-and-usage \
  --time-period Start=2026-05-01,End=2026-08-01 \
  --granularity MONTHLY \
  --metrics UnblendedCost UsageQuantity \
  --group-by Type=DIMENSION,Key=SERVICE \
  --output json

まずサービス単位で内訳を出し、次に `Type=DIMENSION,Key=USAGE_TYPE` に変えてインスタンス費用・ストレージ費用・I/O費用・データ転送費用の比率を確認します。この内訳を見ずに個別の施策から始めると、金額の小さい項目に工数を使うことになります。Cost Explorer APIのリクエストには料金が発生する点にも注意してください。

どこにも接続されていないEBSボリュームを一覧化する参照のみ
対象
Amazon EC2 / Amazon EBS(AWS CLI v2)
権限
ec2:DescribeVolumes
変更作業
なし(参照のみ)
Production実行
可能
# 対象: Amazon EC2 / Amazon EBS(AWS CLI v2)
# 権限: ec2:DescribeVolumes
# 変更作業: なし(参照のみ)
# Production 実行: 可能
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query "Volumes[].{Id:VolumeId,Type:VolumeType,SizeGiB:Size,Iops:Iops,\
Throughput:Throughput,AZ:AvailabilityZone,Created:CreateTime,Name:Tags[?Key=='Name']|[0].Value}" \
  --output table

`status=available` はどのインスタンスにもアタッチされていない状態です。課金は継続しているため、まずこの一覧を出します。ただし「切り離した直後の退避用」「復旧手順で使う予定」というボリュームが混ざるため、削除前に必ずタグと作成日、担当者への確認を経てください。

古い手動スナップショットを一覧化する(RDSとEBS)参照のみ
対象
Amazon RDS / Amazon EBS(AWS CLI v2)
権限
rds:DescribeDBSnapshots, ec2:DescribeSnapshots
変更作業
なし(参照のみ)
Production実行
可能
# 対象: Amazon RDS / Amazon EBS(AWS CLI v2)
# 権限: rds:DescribeDBSnapshots, ec2:DescribeSnapshots
# 変更作業: なし(参照のみ)
# Production 実行: 可能

# 手動作成された RDS スナップショット(自動バックアップは snapshot-type=automated)
aws rds describe-db-snapshots \
  --snapshot-type manual \
  --query "DBSnapshots[].{Id:DBSnapshotIdentifier,Source:DBInstanceIdentifier,\
Created:SnapshotCreateTime,SizeGiB:AllocatedStorage,Engine:Engine}" \
  --output table

# 自アカウント所有の EBS スナップショット(作成日の古い順)
aws ec2 describe-snapshots \
  --owner-ids self \
  --query "sort_by(Snapshots,&StartTime)[].{Id:SnapshotId,Volume:VolumeId,\
Started:StartTime,SizeGiB:VolumeSize,Desc:Description}" \
  --output table

手動スナップショットは保持期間の自動管理対象外で、明示的に削除するまで残り続けます。移行時や障害対応時に取った一時的なスナップショットが数年分積み上がっているケースがあります。削除判断の前に、監査・法定保存要件で保持が必要なものが含まれていないかを確認してください。

ストレージ種別とプロビジョニングIOPSの設定値を確認する参照のみ
対象
Amazon RDS(AWS CLI v2)
権限
rds:DescribeDBInstances
変更作業
なし(参照のみ)
Production実行
可能
# 対象: Amazon RDS(AWS CLI v2)
# 権限: rds:DescribeDBInstances
# 変更作業: なし(参照のみ)
# Production 実行: 可能
aws rds describe-db-instances \
  --query "DBInstances[].{Id:DBInstanceIdentifier,Class:DBInstanceClass,\
StorageType:StorageType,AllocatedGiB:AllocatedStorage,Iops:Iops,\
StorageThroughput:StorageThroughput,MultiAZ:MultiAZ,\
BackupRetentionDays:BackupRetentionPeriod,Status:DBInstanceStatus}" \
  --output table

ここに出るのは「設定値」です。実際に消費されているIOPSはCloudWatchの ReadIOPS / WriteIOPS で測ります。設定値が実測を大きく上回っているなら、プロビジョニング量の見直し候補です。

未使用リソースを削除する(元に戻せない操作)
対象
Amazon EC2 / Amazon EBS / Amazon RDS(AWS CLI v2)
権限
ec2:DeleteVolume, ec2:DeleteSnapshot, rds:DeleteDBSnapshot
変更作業
あり(削除。復元できない)
Production実行
実行前に所有者確認と削除承認を必須とすること
# 対象: Amazon EC2 / Amazon EBS / Amazon RDS(AWS CLI v2)
# 権限: ec2:DeleteVolume, ec2:DeleteSnapshot, rds:DeleteDBSnapshot
# 変更作業: あり(削除操作。実行後に元へ戻すことはできない)
# Production 実行: 一覧の全件確認と所有者承認を得てから、1件ずつ実行すること
#
# 注意: 以下は「一括で流すスクリプト」ではなく、1件ごとに判断した結果を実行する形を想定しています。
#       まず削除候補ボリュームのスナップショットを取り、復旧経路を確保してから削除します。
aws ec2 create-snapshot \
  --volume-id vol-0123456789abcdef0 \
  --description "pre-delete backup of vol-0123456789abcdef0"

# スナップショットの完了を確認したうえで削除する
aws ec2 delete-volume --volume-id vol-0123456789abcdef0

削除は自動化しないでください。`available` 状態のボリュームやスナップショットには、障害対応の退避用や、まだ引き継ぎの済んでいない資産が混ざります。一覧を出す作業と削除する作業は分け、削除は所有者確認と承認を経た件だけに限定します。

結果の読み方

意味確認するポイント
Id(VolumeId / SnapshotId)リソース識別子削除候補として記録し、所有者確認の対象にする
Type / StorageTypeストレージ種別(gp2 / gp3 / io1 / io2 / standard 等)gp2のままのボリュームはgp3への切り替え検討対象。io1/io2はIOPS要件が実測で裏付けられているかを確認する
IopsプロビジョニングされたIOPSCloudWatchの実測IOPSと突き合わせる。恒常的に実測が下回るなら過剰プロビジョニング
Throughput / StorageThroughputプロビジョニングされたスループット実測のReadThroughput+WriteThroughputと比較する
Created / StartTime作成日時古い手動スナップショットほど、目的が失われている可能性が高い
AZ / AvailabilityZone配置アベイラビリティゾーンアプリケーションと異なるAZにある場合、クロスAZのデータ転送費用が発生していないか確認する
BackupRetentionPeriod自動バックアップの保持日数要件以上に長く設定されていないか。非本番環境では特に確認する
MultiAZスタンバイの有無開発・検証環境でtrueになっていないか。可用性要件の再確認対象
UnblendedCost(Cost Explorer)該当期間の実費用サービス別・使用タイプ別の内訳を見て、金額の大きい項目から着手する

こういう状況で使います

  • AWSの請求額が増え続けているが、どの項目が増えたのか分からない
  • 構築時に決めたインスタンスクラスとストレージ設定を、その後一度も見直していない
  • どこにもアタッチされていないEBSボリュームや、目的の分からないスナップショットが残っている
  • 開発環境・検証環境が24時間稼働している
  • Provisioned IOPSを設定しているが、実際に使い切っているか確認していない
  • リザーブドインスタンスやSavings Plansを勧められたが、判断材料がない

考えられる原因(可能性の高い順)

  1. 01

    構築時の見積もりのまま運用されている

    インスタンスクラスとストレージのプロビジョニング量は、多くの場合サービス開始前に「余裕を持って」決められます。稼働後の実測に照らして見直す運用が組まれていないと、その値がそのまま残ります。

  2. 02

    孤立したリソースが課金され続けている

    インスタンス削除時に残ったEBSボリューム、移行作業で取った手動スナップショット、検証で作って使わなくなったリードレプリカは、いずれも明示的に削除するまで課金対象です。使っていないことが請求書からは分かりにくい種類の費用です。

  3. 03

    ストレージ種別が古い世代のまま

    gp2はボリュームサイズに基線性能が連動し、バーストはI/Oクレジットに依存します。gp3は基線性能とスループットを容量と切り離して設定できます。gp2のまま運用されているボリュームは、性能要件と費用の両面で見直し候補になります。適用可否と条件は現行のAWSドキュメントで確認してください。

  4. 04

    Provisioned IOPSが消費されていない

    io1/io2やgp3の追加IOPSは、消費の有無にかかわらずプロビジョニング量で課金されます。CloudWatchの実測が恒常的に設定値を下回っている場合、費用だけが発生しています。

  5. 05

    非本番環境が本番と同じ構成になっている

    開発・検証環境でMulti-AZが有効、本番と同じインスタンスクラス、24時間稼働、という構成は珍しくありません。可用性要件が本番と異なるなら、構成も分けられます。

  6. 06

    データ転送費用が見えていない

    アプリケーションとデータベースが別AZにある場合、クロスAZのデータ転送費用が継続的に発生します。単価は小さくても、トラフィック量が多い構成では無視できない規模になることがあります。

確認手順

  1. 1

    Cost Explorerでコスト内訳を出す

    参照のみ

    サービス別・使用タイプ別に月次で出し、金額の大きい順に着手対象を決めます。ここを飛ばすと施策の優先順位が付きません。

  2. 2

    停止中・未使用のインスタンスを洗い出す

    参照のみ

    `aws rds describe-db-instances` の `DBInstanceStatus` と、接続数(DatabaseConnections)が長期間ゼロのインスタンスを突き合わせます。

  3. 3

    孤立リソースを一覧化する

    参照のみ

    `status=available` のEBSボリューム、手動スナップショット、使われていないリードレプリカを一覧にし、所有者を確認します。

  4. 4

    実測とプロビジョニング値を突き合わせる

    参照のみ

    CloudWatchのCPUUtilization・FreeableMemory・ReadIOPS・WriteIOPSを、設定されたインスタンスクラスとIOPSと比較します。

  5. 5

    バックアップ保持設定を確認する

    参照のみ

    自動バックアップ保持日数が要件に対して過大でないか、手動スナップショットが何年分残っているかを確認します。

  6. 6

    非本番環境の構成を確認する

    参照のみ

    開発・検証環境のMulti-AZ設定、インスタンスクラス、稼働時間帯を確認します。

  7. 7

    AWS Budgetsで監視を設定する

    見直し後の効果を追うため、予算としきい値通知を設定します。単発の削減ではなく継続的な監視にします。

対応方法

すぐに実施できる低リスクの対応

  • 使っていないリソースを「一覧化」する

    参照のみ

    削除ではなく、まず一覧と所有者の特定までを行います。この段階では費用は減りませんが、以降の判断がすべてこの一覧に基づきます。

  • AWS BudgetsとCost Anomaly Detectionを設定する

    費用の増加に後から気づく状態をやめます。しきい値通知を設定しておけば、次の増加は請求書ではなく通知で分かります。

事前検討が必要な変更

  • 実測に基づくright-sizingを計画する

    構築時の見積もりではなく、CloudWatchのp95・p99を根拠にクラスを見直します。変更は再起動を伴うため、メンテナンス枠が必要です。

  • gp2からgp3への切り替えを検討する

    性能要件を満たすことを確認したうえで切り替えます。適用条件と切り替え中の挙動は現行のAWSドキュメントで確認してください。

  • プロビジョニングIOPSを実測に合わせる

    実測が恒常的に設定値を下回るなら引き下げを検討します。ピークを含む期間で測り、繁忙期を外して判断しないでください。

  • バックアップ保持期間を要件に合わせる

    保持日数を要件に合わせ、手動スナップショットには棚卸しの運用ルールを設けます。

  • 非本番環境の稼働時間を業務時間に限定する

    開発・検証環境を夜間・休日に停止します。停止スケジュールの自動化と、起動漏れ時の連絡経路をセットで用意します。

  • クロスAZ通信を減らす配置に見直す

    アプリケーションとデータベースのAZ配置を確認し、可用性要件と両立する範囲で通信の往復を減らします。

再起動・サービス影響を伴う変更

  • 非本番環境のMulti-AZを解除する

    可用性要件を関係者で再確認したうえで実施します。解除は変更操作であり、再度有効化する際にも時間がかかります。

  • 孤立リソースを削除する

    削除は復元できません。所有者確認・承認・事前スナップショットの3点を満たした件のみ、1件ずつ実行します。

専門家のレビューが必要な作業

  • Savings Plans / リザーブドインスタンスを購入する

    専門家レビュー必須

    長期のコミットメントであり、途中で構成を変えると無駄になります。right-sizingを終え、使用量が安定したことを実測で確認してから検討します。適用範囲と柔軟性は種類によって異なるため、購入前に対象サービス・対象条件を必ず確認してください。

!注意事項

  • この文書は削減率・削減額を一切示しません。「何%削減できる」という数値は構成と使用状況に完全に依存します。ご自身のCost Explorerのデータから算出してください。他社事例の削減率をそのまま自社に当てはめることはできません。
  • 削除操作は復元できません。`available` 状態のEBSボリュームには、障害対応の退避用や引き継ぎ前の資産が含まれることがあります。一覧化と削除は別の作業として扱い、削除は所有者確認と承認を得た件だけに限定してください。
  • 手動スナップショットには監査要件・法定保存要件で保持が必要なものが含まれる場合があります。削除前に保存要件の確認が必要です。
  • プロビジョニングIOPSの引き下げは、繁忙期を含まない期間の実測で判断すると性能事故につながります。年次・月次のピークを含む期間で測ってください。
  • Savings Plansとリザーブドインスタンスは解約できないコミットメントです。right-sizingより先に購入すると、最適化後の構成に合わない契約が残ります。
  • Cost Explorer APIの呼び出しにはリクエスト単位の料金が発生します。定期実行を組む場合は呼び出し頻度を設計してください。

バージョン・環境による違い

gp2 と gp3gp2は基線性能がボリュームサイズに連動し、超過分はI/Oクレジット(バースト)で賄います。gp3は基線に加えてIOPSとスループットを容量とは独立に設定できます。切り替え可否・上限・課金条件は現行のAWSドキュメントを参照してください。
Amazon AuroraAuroraはストレージ容量が使用量に応じて増減し、I/O課金の扱いがRDSと異なります(I/O-Optimized構成の有無を含む)。コスト構造がRDSと違うため、同じチェックリストの項目でも重み付けが変わります。
RDSの停止機能RDSインスタンスの一時停止には最大停止期間の制約があり、期間を過ぎると自動的に起動します。開発環境の夜間停止を設計する際はこの制約を前提にしてください。

これで解決しない場合に確認すること

  • 費用が減らない場合、内訳のどこが動いていないかを確認する

    インスタンス費用を下げてもストレージ費用やデータ転送費用が支配的なら総額は動きません。Cost Explorerの使用タイプ別内訳に戻ってください。

  • タグ付けの網羅性を確認する

    コスト配分タグが付いていないリソースは、どの部署・どのシステムの費用か判別できません。棚卸しの前提としてタグ運用を整えます。

  • Cost and Usage Reportで詳細を確認する

    Cost Explorerの粒度で足りない場合、Cost and Usage Report(CUR)をS3に出力し、リソース単位で分析します。

  • 削除できないリソースの依存関係を確認する

    スナップショットがAMIから参照されている、ボリュームが復旧手順書に記載されている、といった依存がないかを確認します。

  • 同じ増加が再発しない仕組みを作る

    一度の棚卸しで下がっても、同じ経路で再び増えます。作成時のタグ必須化と定期棚卸しをセットにしてください。

この文書の根拠と限界

製品の公式ドキュメントに基づく説明

Amazon RDS・Amazon EBS・AWS Cost Explorer の公開仕様と、クラウド費用の一般的な棚卸し手順に基づきます。価格・削減率・特定環境の実測値は一切含みません。金額はご自身の Cost Explorer と AWS Pricing Calculator で算出してください。

よくある質問

AWSのデータベースコストはどのくらい削減できますか?

この文書では削減率を提示しません。削減余地は現在の構成と使用状況に完全に依存し、既に最適化されている環境ではほとんど下がりません。まずCost Explorerでサービス別・使用タイプ別の内訳を出し、金額の大きい項目から着手してください。削減見込みはその内訳からしか算出できません。

何から手を付けるべきですか?

影響が小さく戻しやすい順です。(1)Cost Explorerでの内訳把握、(2)未使用リソースの一覧化、(3)実測に基づくright-sizing、(4)ストレージ種別とプロビジョニング量、(5)バックアップ棚卸し、(6)非本番環境の構成と稼働時間、(7)使用量が安定してからのコミットメント購入、の順で進めます。

リザーブドインスタンスやSavings Plansは先に買ってよいですか?

推奨しません。これらは解約できない長期コミットメントです。right-sizingを先に済ませないと、最適化後には不要な構成に対する契約が残ります。使用量が安定していることを実測で確認してから検討してください。

gp2からgp3に変えれば安くなりますか?

構成によります。gp3は基線性能とスループットを容量と切り離して設定できるため、大容量を性能目的で確保していた構成では見直し余地があります。ただし性能要件を満たすかの確認が先です。適用条件と課金条件は現行のAWSドキュメントで確認してください。

アタッチされていないEBSボリュームは削除してよいですか?

一覧化してすぐ削除してはいけません。障害対応時の退避用、移行途中の一時領域、引き継ぎ前の資産が含まれることがあります。タグと作成日を確認し、所有者の承認を得て、削除前にスナップショットを取ってから1件ずつ実行してください。

Productionで実行できますか?

一覧系のコマンド(`get-cost-and-usage`、`describe-volumes`、`describe-snapshots`、`describe-db-instances`)は参照のみで本番環境でそのまま実行できます。削除コマンドとストレージ・インスタンスクラスの変更は影響があるため、承認とメンテナンス枠を経てから実施してください。

この文書がカバーする質問

  • AWSの請求額が増えた原因を特定したい
  • RDSのコストを下げる方法が知りたい
  • 使っていないEBSボリュームやスナップショットを見つけたい
  • 開発環境のAWS費用を減らしたい

リスク表示の意味

  • 参照のみデータと設定を変更しません。
  • 影響は限定的ですが、権限と負荷の確認が必要です。
  • 性能・ロック・コストに影響する可能性があります。
  • 障害・データ損失・復旧作業が発生する可能性があります。
  • 専門家レビュー必須本番適用前に別途レビューが必須です。

GIIPの対応範囲

コスト見直しの難しさは、施策を知らないことではなく、棚卸しが一度きりで終わることにあります。整理した3か月後には新しい未使用ボリュームとスナップショットが積み上がり、right-sizingした構成は業務量の変化で再びずれます。GIIPではAWSとAzure上の複数データベースおよび約30のWebサービスについて、孤立リソースの検出とプロビジョニング値対実測値の乖離チェックをAIエージェントが定期的に実行し、削除や構成変更のように取り返しのつかない判断は人間の専門家が承認する形で運用しています。棚卸しをイベントではなく定常業務にすることが目的です。

執筆・技術検証

GIIP プロダクション運用チーム

大規模Webサービス、SQL Server、Oracle、AWS、Azureの設計・移行・運用に約30年従事。x12largeクラスのAWS RDS for SQL Server環境12セット、約12万テーブルのOracle環境、約3TBのTiDBからAurora MySQLへの移行を経験。現在も複数のクラウドデータベースと約30のWebサービスを、AIエージェントと人間の専門家が継続的に監視・運用しています。

関連するナレッジ

関連サービス

AWSコスト構成の棚卸しを依頼する

同じ確認を複数の環境で継続する必要がある場合は、運用体制ごと相談できます。

AWSコスト構成の棚卸しを依頼する

ナレッジベース一覧へ