1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSリザーブドインスタンス完全ガイド~初心者から活用まで~

Posted at

はじめに

AWSのコストが高くなっていませんか?特にデータベースなどのリソースを長期間使い続ける場合、リザーブドインスタンス(Reserved Instances) を活用することで、最大75%のコスト削減が可能です。

本記事では、AWS Black Beltセミナーの内容を基に、リザーブドインスタンスについて初心者向けに解説します。


1. リザーブドインスタンスとは?

基本概念

リザーブドインスタンスは、コミットメント型の割引プラン です。簡単に言うと:

「1年間または3年間、このサービスを使い続けます」と約束する代わりに、通常料金(オンデマンド料金)から大幅な割引を受けられる

という仕組みです。

割引率の目安

  • 1年間コミット: 約30~40%の割引
  • 3年間コミット: 最大75%の割引

リザーブドインスタンス vs セービングスプラン

AWSのコミットメント型割引には、主に2つのオプションがあります:

項目 セービングスプラン リザーブドインスタンス
対象 EC2など計算リソース向け EC2、RDS、ElastiCache等広範囲
柔軟性 高い(インスタンスファミリー変更可) 低い(属性が固定される傾向)
推奨用途 コンピューティング データベースなど安定的なワークロード

ポイント: EC2は柔軟性が高いセービングスプランを、RDSなどは条件が固定されやすいリザーブドインスタンスを使う傾向があります。


2. どんなワークロードに適しているか?

リザーブドインスタンスは、以下のような特徴を持つワークロードに最適です:

適している例

  • データベース(RDS、DynamoDB等)
  • キャッシュレイヤー(ElastiCache)
  • 本番環境の基幹システム
  • リソース変動が少ない環境

適さない例

  • テスト環境(スケール変動が頻繁)
  • 一時的なジョブ(SpotInstancesの方が良い)
  • サーバーレスメインの環境

簡潔に言うと: 「この1年間、ほぼ同じ構成で使い続ける」という確実性があれば、リザーブドインスタンス購入を検討しましょう。


3. リザーブドインスタンスの仕組み(重要!)

誤解しやすいポイント

多くの人が勘違いしていることですが、リザーブドインスタンスは物理的なリソースではありません

【重要な理解】

購入したリザーブドインスタンス
    ↓(自動的に適用)
条件に合致した起動中のリソース
    ↓
割引料金で利用できる

つまり、「この条件のリソースを割引料金で使う権利」 を購入しているのです。

具体例

RDSの例で説明します:

購入内容: MySQL R8G 2XLarge × 1台分

適用される場合:
- ✅ 起動中の MySQL R8G 2XLarge → 割引料金で利用
- ✅ PostgreSQL R8G 2XLarge → 割引料金で利用(条件一致)

適用されない場合:
- ❌ MySQL T4G XLarge → オンデマンド料金のまま(インスタンスファミリーが異なる)
- ❌ 別のリージョンのMysql R8G 2XLarge → オンデマンド料金のまま(リージョンが異なる)

重要: 条件が合わなくても、購入済みのリザーブドインスタンスは課金されます。これが購入計画が重要な理由です。


4. 対応サービスと特徴

リザーブドインスタンスが使えるサービス一覧

以下のサービスでリザーブドインスタンスが利用可能です:

  • EC2 - 仮想マシン
  • RDS - 管理型データベース
  • ElastiCache - キャッシュサービス
  • DynamoDB - NoSQLデータベース(「リザーブドキャパシティ」と呼ばれます)
  • Redshift - データウェアハウス
  • OpenSearch Service - 検索・分析
  • MemoryDB - インメモリデータベース

サービスごとの違い

各サービスの重要な特徴を表にまとめました:

サービス 柔軟性 特記事項
EC2 中程度 変更・交換・マーケットプレス売却が可能
RDS あり エンジン・エディション指定が必須
ElastiCache あり(10月以降) Redis/Memcached で異なる正規化係数
DynamoDB なし キャパシティユニット単位の購入
Redshift なし サイズ固定

5. RDSを例にした詳しい設定方法

RDSリザーブドインスタンスの構成パターン

RDSでは、デプロイオプションを選ぶ必要があります:

【シングルAZ構成を購入】
- r8g.large × 1台分を購入
  → シングルAZのr8g.largeに適用される
  → 正規化係数:1

【マルチAZ構成を購入】
- r8g.large × 1台分を購入
  → 実はシングルAZ2台分に相当
  → 正規化係数:2
  → つまり、マルチAZ構成ではシングルAZ2台購入する必要がある

【Aurora クラスタ(マルチAZDB構成)を購入】
- r8g.large × 1台分を購入
  → シングルAZ3台分に相当(ライター1台+リーダー2台)
  → または、マルチAGDB 1台 + シングルAZ 1台分を購入

注意: マルチAZ構成を検討している場合は、購入するリザーブドインスタンスの台数計算に注意してください!


6. 「サイズの柔軟性」について

サイズの柔軟性とは?

RDSやElastiCacheなど、一部のサービスでは、購入したリザーブドインスタンスを異なるサイズのリソースに適用できます。この仕組みを 「サイズの柔軟性」 と呼びます。

正規化係数の概念

各インスタンスサイズには「正規化係数」が定義されています:

【例:RDS MySQL シングルAZ】

small:    正規化係数 = 1
medium:   正規化係数 = 2
large:    正規化係数 = 4
2xlarge:  正規化係数 = 16

【意味】
- small 4台分 = large 1台分
- small 16台分 = 2xlarge 1台分

具体的な適用例

【購入内容】
large × 8台分(正規化係数合計:8 × 4 = 32)

【適用可能なパターン】
- large 8台に適用 ✅
- 2xlarge 2台に適用 ✅(2 × 16 = 32)
- large 4台 + 2xlarge 1台に適用 ✅(4×4 + 1×16 = 32)
- large 1台 + medium 14台に適用 ✅(1×4 + 14×2 = 32)

Aurora IOOptimizedの注意点

AuroraのIOOptimized構成では、通常構成の30%分、正規化係数が増加します:

【例:small サイズ】
- 標準構成:    正規化係数 = 1
- IOOptimized: 正規化係数 = 1.3

【購入時の注意】
購入数は整数のみ対応なので、必要に応じて調整が必要
例:xlarge IOOptimized 5台が必要な場合
- 計算: 10.4 × 5 = 52
- 購入方法: 2xlarge 3台(48)+ large 1台(4)= 計52

7. 支払いオプションの選択

3つの支払い方法

リザーブドインスタンスでは、3つの支払い方法から選べます:

支払い方法 支払いタイミング 割引率 用途
全額前払い 開始時に一括払い 最高 キャッシュが豊富な場合
一部前払い 開始時に約半額 + 月額 中程度 バランス型
前払いなし 月額のみ 低い キャッシュが限定的な場合

サービスごとの対応状況

全てのサービスが3つの支払い方法に対応しているわけではありません

【RDS】
- 1年: 全額前払い、一部前払い、前払いなし ✅
- 3年: 全額前払い、一部前払いのみ(前払いなし非対応)

【DynamoDB】
- 一部前払いのみ対応

【その他のサービス】
- サービスごとに異なる

重要: 購入前に、対象サービスの支払い方法を必ず確認してください!


8. 購入計画の立て方(最も重要)

ステップ1:リソース調査

まず、どのリソースがリザーブドインスタンス対象になるか把握します。

# RDSの例:リソース一覧をCLIで取得
aws rds describe-db-instances --region ap-northeast-1 \
  --query 'DBInstances[].{DBInstanceIdentifier:DBInstanceIdentifier, Engine:Engine, DBInstanceClass:DBInstanceClass}'

ステップ2:ヒアリング

リソース所有者に以下の質問を行います:

「このリソースは、今後1年間、サイズやエンジンを変更することなく、使い続けますか?」

この答えが「Yes」であれば、リザーブドインスタンス購入の候補になります。

ステップ3:購入条件の決定

以下の3点を決めます:

3-1. 購入アカウント

  • 推奨: リソースを所有する個別のメンバーアカウント
  • 理由: 管理が容易で、更新時に対応がしやすい
  • 避けた方が良い: 管理アカウント一括購入(管理が複雑になる可能性)

3-2. タイプ・オプション

  • インスタンスファミリー: ヒアリング結果から決定
  • エンジン: ヒアリング結果から決定
  • 支払いオプション: 経理部門と相談して決定

3-3. サイズと購入台数

【基本原則】
現在のリソースサイズで購入する

【例外パターン】
- 1年後にサービス終了予定 → 小さめを購入
  例:2xlarge → xlarge に計画されている場合
       → large × 2台分を購入する(リスク軽減)

- 今後スケールアップする予定 → 多めに購入

ステップ4:損益分岐点の確認(オプション)

購入する前に、「いつから得になるか」を計算します:

【例:RDS MySQL r8g.large シングルAZ 1台】
- オンデマンド料金: 月額$200
- リザーブドインスタンス(1年全額前払い): 年額$1,500

計算:
- 損益分岐点 = 1,500 ÷ 200 = 7.5ヶ月
- つまり、7.5ヶ月以上使うならお得!

推奨:
損益分岐点が8~9ヶ月程度なら購入を検討する価値がある

大切なポイント

「完璧な調査」を目指さず、大きなコストから始める

全てのリソースを完璧に調査するのに時間がかかってしまうと、その間は割引が全く受けられません。コストが大きいアカウント・リソースから小さく始めることをお勧めします。


9. 購入手順(マネジメントコンソール)

注意事項(重要!)

  • リザーブドインスタンスはキャンセルできません → 購入前の確認が必須
  • 自動更新機能がない → 有効期限を記録し、手動で更新する必要あり
  • サービスによって画面が異なる → 購入前に確認しましょう

EC2の購入例

1. EC2ダッシュボード → リザーブドインスタンス
2. 以下をチェック:
   - プラットフォーム(Windows/Linux など)
   - インスタンスタイプ
   - スコープ(リージョナル/ゾーン)
   - テナンシー
3. 「右上のキャパシティ予約」でゾーンRIも表示
4. 数量決定後、カートでレビュー
5. レビュー画面で「条件の誤りがないか」を確認
6. 購入

RDSの購入例

1. RDSダッシュボード → リザーブドインスタンス
2. 以下を選択:
   - DBエンジン(MySQL/PostgreSQL等)
   - ライセンス(LI/BYOL)
   - デプロイ(シングルAZ/マルチAZ)
   - インスタンスクラス
   - 期間(1年/3年)
   - 支払いオプション
3. 「次へ」でレビュー画面に遷移
4. 最終確認後、購入

大量購入時はCLIを推奨

複数のリザーブドインスタンスを購入する場合、CLIを使うと効率的です:

# ステップ1:オファリングIDを取得
aws rds describe-reserved-db-instances-offerings \
  --db-instance-class db.r8g.large \
  --engine mysql \
  --multi-az \
  --duration 31536000 \
  --filters Name=db-instance-family,Values=db.r8g \
  --region ap-northeast-1

# ステップ2:リザーブドインスタンスを購入
aws rds purchase-reserved-db-instances-offering \
  --reserved-db-instances-offering-id <オファリングID> \
  --db-instance-count 3 \
  --region ap-northeast-1

10. 購入後のモニタリング(重要)

モニタリング指標1:使用率(Utilization)

定義: リザーブドインスタンスがどれだけ利用されているか

使用率 = (リザーブドインスタンスが適用された時間)/ (コミット期間)

理想: 100% に近い
許容: 損益分岐点を下回らなければ損していない

確認方法:

AWS管理コンソール
→ 請求とコスト管理
→ 使用状況レポート
→ グラフで確認(サービスフィルターを設定)

モニタリング指標2:カバレッジ(Coverage)

定義: リザーブドインスタンスでカバーされている割合

カバレッジ = (リザーブドインスタンスで支払った料金)/ (支払うべき料金 on-demand)

例:RDSのカバレッジが50%
    = RDS料金の50%がリザーブドインスタンスでカバーされている

注意点:

  • 業界標準やベンチマークはない(ワークロードによって異なる)
  • ミッションクリティカル: 90%近い
  • サーバーレスメイン: 0%に近いこともある
  • 目標値はワークロード特性で判断

モニタリング指標3:コスト削減額

確認方法:

AWS管理コンソール
→ 請求とコスト管理
→ 使用状況レポート(上部)
→ 「削減効果」セクション

※ CSVダウンロード可能

AWS Budgetsでアラート設定

使用率・カバレッジが想定外の値になったときに気づけるよう、アラートを設定します:

1. AWS管理コンソール
→ 請求とコスト管理
→ Budgets

2. 予算を作成
   - 使用率が目標値を下回った場合に通知
   - カバレッジが低下した場合に通知

コストエクスプローラーでの分析

フィルター設定:
- 購入タイプ: "Reserved" を選択
- 使用タイプ: "Heavy Utilization" など
- 詳細オプション: "償却コスト" を選択

※ 毎月の料金比率を正確に確認できます

11. CUR(Cost and Usage Report)での詳細分析

CURを使う場面

コストエクスプローラー: 簡易的な分析
CUR: 詳細な分析(チャージバック、リソース単位での確認)

重要な列の説明

列名 意味
lineItemType "Reservation" = 購入時, "Usage" = 月額
discount リザーブドインスタンスの割引
effectiveCost 実質的な負担コスト(割引済み)
unblendedCost 割引前のコスト

チャージバック用の計算

対象リソースへのチャージバック額
= アカウントID x リソースID で絞った行の effectiveCost合計

費用削減額の計算

費用削減額 = onDemandCost - effectiveCost
           (支払ったはずの料金)  (実際の支払い)

12. よくある落とし穴と対策

落とし穴1:リージョンの間違い

❌ 東京リージョンで購入したRI
   → バージニア北部のリソースには適用されない

✅ 購入前にマネジメントコンソールのリージョン設定を確認

落とし穴2:インスタンスファミリーの不一致

❌ r8g.large RIを購入したのに
   → t4g.large リソースが起動している

✅ ヒアリング時に「インスタンスファミリーは固定か」を確認

落とし穴3:エンジンの指定ミス

❌ MySQL BYOL で購入したのに
   → Oracle License Included で購入済みだった

✅ 購入画面で、ライセンス種別を確認

落とし穴4:クォーター超過

❌ 東京リージョンで既に30台のRDSリザーブドインスタンスを購入
   → さらに20台購入しようとしたら購入できない

✅ 購入前に AWS に「クォーター緩和申請」を事前に実施

落とし穴5:サイズ計算の誤り

❌ Aurora IOOptimized 5台を想定したのに
   → xlarge 5台分の小数点の正規化係数を購入した

✅ IOOptimized を使う場合は、正規化係数を正確に計算
   例: 10.4 × 5 = 52.0
       → 2xlarge 3台(48) + large 1台(4) = 52

13. リザーブドインスタンス共有機能

組織内での割引共有

複数のAWSアカウント間でリザーブドインスタンスの割引を共有できます:

【例】
ビジネスユニットA: アカウント1, 2
ビジネスユニットB: アカウント3, 4

アカウント1 で購入したRI
→ アカウント1のリソースに優先的に適用
→ 余剰分は アカウント2, 3, 4 で自動的に共有

共有の設定方法

1. 管理アカウントにログイン
2. 請求とコスト管理
   → 請求設定
   → リザーブドインスタンス及びセービングスプランの割引共有
3. 共有を有効/無効 切り替え

注意点

- デフォルト: 共有有効
- 共有を無効にすると、特定アカウント間での細かい制御はできない
  (すべて無効か、すべて有効かの選択肢のみ)
- セービングスプランとリザーブドインスタンスは独立しない
  (両者に同じ共有設定が適用される)

14. 推奨事項機能の活用と注意点

コストエクスプローラーの推奨事項

AWSは自動的にリザーブドインスタンスの購入を提案してくれます:

AWS管理コンソール
→ コストエクスプローラー
→ Reserved Instances の推奨事項セクション

推奨事項の前提条件

過去7日間 / 30日間 / 60日間
のいずれかの使用パターンから推奨

【注意】将来予測は含まれていない

推奨事項をそのまま採用してはいけない理由

❌ 今後ワークロードが増加する → 推奨値は足りない可能性
❌ 確実に減少する計画がある → 推奨値は多すぎる可能性
❌ サイズ柔軟性あり → 最小サイズが推奨される傾向

✅ 推奨事項は参考値として使い、購入計画を自分で立てる

15. まとめ

リザーブドインスタンスのポイント

ポイント 内容
割引率 最大75%(3年全額前払い)
対象ワークロード 安定的で1年以上変動のないもの(DB等)
仕組み 「割引で使う権利」を購入(物理リソースではない)
購入前 リージョン、ファミリー、エンジン、台数を厳密に確認
購入後 キャンセル不可、手動更新が必要
モニタリング 使用率、カバレッジ、削減額を追跡

実施の流れ

1️⃣ リソース調査
   ↓
2️⃣ ヒアリング(1年間変わらないか確認)
   ↓
3️⃣ 損益分岐点確認
   ↓
4️⃣ 購入条件決定(アカウント、サイズ、支払いオプション等)
   ↓
5️⃣ 購入(確認入念に!)
   ↓
6️⃣ モニタリング(使用率・カバレッジ追跡)
   ↓
7️⃣ 次の購入計画に反映

EC2 vs RDS での使い分け

【EC2】
→ セービングスプラン推奨
  (柔軟性が高いため)

【RDS等のDB】
→ リザーブドインスタンス活用
  (スケール固定で長期利用のため)

まとめ

AWSのリザーブドインスタンスは、正しく活用すれば非常に強力なコスト削減ツール です。

ただし、購入計画の段階での確認が何より重要です。焦らず、大きなコストから始めて、経験を積んでいくことをお勧めします。

また、購入後のモニタリングも手を抜かず、次の購入計画に活かしましょう。


参考資料


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?