chikoblog

やってみたことの掃溜め

【AWS】RI(リザーブドインスタンス)とは何かをまとめた記事

この記事は マイナビ Advent Calendar 2020 の16日目の記事です。

仕事でAWSの費用削減を検討した際、RI(リザーブインスタンス)について調べたので、
そちらを個人的にまとめた記事となります。

RI とは

AWS の各種サービスに対して1年または3年という長期利用を予約することで、 オンデマンドインスタンス料金に比べ利用料金が大幅に割引(最大 75%)される仕組みです。

1年よりも3年の方が割引率が高く設定されています。 サービスやリソースによって多少の例外はありますが、 基本的に「全前払い」「一部前払い」「前払いなし」という3種類の支払い方法が存在し、 原則、購入後に支払い方法を変更することはできません。

簡単に言って、サーバ自体に変更がないものであれば、 決まった期間の利用料だけ安くできる、電車の定期券のような仕組みです。

RI対象のAWS サービス

  • EC2
  • RDS(Auroraも含む)
  • Redshift
  • ElastiCache
  • DynamoDB
  • Elasticsearch Service

RI の利用にあたり

どのAWSサービスにおいても RI 購入後にインスタンスの再起動をする必要はないです。

RI は特定のインスタンスに紐づける仕組みではなく、 所有する RI の適用対象となるオンデマンドインスタンスが稼働していれば AWS によって自動的に割引の適用が開始されます。

また、購入に際して見積書や発注書などのやり取りは必要なく、 各サービスのマネジメントコンソールにて任意のタイミングで必要なものを自由に購入することが可能です。 クラスメソッドに見積代行を依頼している場合は、通常の月額利用料にRIが適応された状態で見積が届きます。

原則、購入時に指定したインスタンスタイプより大きなものへの変更はできないという制限があります。 ただし、t2.xlarge のインスタンスをより小さいt2.large 2台に分割することや、 t2.large 2台をスペックが大きいt2.xlarge のインスタンスとして結合することが制限はありますが可能です。

こちらの結合や分割できる範囲や詳細につきましてはインスタンスサイズの柔軟性に記載されております。

RI 購入時に必要な項目

  • コミット期間の指定
  • 支払いオプションの指定
  • 利用料のコミットメント
  • Region指定
  • インスタンス ファミリー指定
  • インスタンス タイプ指定
  • テナンシー指定
  • OS(platform) 指定
  • AZ(Scope)指定

RI 利用に適したシーン

  • 常に起動しているDBやキャッシュサーバ
  • 常に起動しているWeb/Appサーバ(通常サービスの最低限必要数)
    • ピーク時のスケールアウトはオンデマンド料金で対応することが可能
  • RI 購入期間内にインスタンスタイプに大きな変更が起きないもの(EC2はスケールアウトに対応可能)

EC2 RI の提供タイプ「Standard」と「Convertible」の違い

EC2 のみ RI にいくつか提供タイプがございますので、 そちらについては下記に簡単にまとめておきます。

EC2 の RI では「Standard」と「Convertible」という2つの提供タイプがあります。

Standard RIの方が割引率が高く設定されています。 上記しましたが、購入時に指定したインスタンスタイプより大きなものへの変更はできないという制限があるためです。 ただし、t2.xlarge のインスタンスをt2.large 2台に分割することや、t2.large 2台をt2.xlarge へ結合することは可能です。 詳細につきましてはインスタンスサイズの柔軟性に記載されております。

一方、Convertible RIは購入後もインスタンスのスペックアップが可能となっており柔軟性が高いかわりに割引率がStandard RIと比較して少し低く設定されています。 ただし、インスタンスのスペックアップをおこなう際はRI の交換が必要で交換したRI 分の差額費用を支払う必要があります。 一度、スペックアップをおこなった場合はスペックは落とせなくなりますので注意が必要です。

EC2 RI 提供タイプ比較表

Convertible Standard
期間 1年間 or 3年間 1年間 or 3年間
支払いオプション 全額前払い or 一部前払い or 前払い無し 全額前払い or 一部前払い or 前払い無し
全リージョンに自動適用 可能 最初に指定したリージョンのみ割引が適応される
インスタンス ファミリーに自動適用 可能 最初に指定したインスタンス ファミリーのみ割引が適応される
インスタンスタイプに適用 原則、Standard タイプと同じだが、
差額費用の支払いをすることで「異なるインスタンスタイプとの交換」が可能
最初に指定したインスタンスタイプのみ割引が適応される
ただし、「インスタンスサイズの柔軟性」を保持している
全テナンシーに適用 最初に指定したテナンシーのみ割引が適応される 最初に指定したテナンシーのみ割引が適応される
全OS(platform)に適用 最初に指定したOS(platform)にのみ割引が適応される 最初に指定したOS(platform)にのみ割引が適応される
キャパシティ予約の機能提供 可能
ただし「Availability Zone 指定」が必要
可能
ただし「Availability Zone 指定」が必要
AWS アカウント間の共有無効化 可能
可能(SPとRIで共通の設定項目)
可能
可能(SPとRIで共通の設定項目)
購入後の交換機能の提供 可能
Tenancy, OS,
Family, Type等
」で可
不可能

RI 利用時の注意点

RI 購入時インスタンス ファミリー内の小さいインスタンスタイプから順に適応される

以下公式ドキュメントによると https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/apply_ri.html

インスタンスサイズの柔軟性は、インスタンスサイズの正規化係数によって決定されます。割引は、予約したインスタンスサイズによって、同じインスタンスタイプの実行しているインスタンスに完全、または部分的に適用されます。この場合、一致する必要がある属性はインスタンスタイプ、テナンシー、プラットフォームのみです。
インスタンスサイズの柔軟性は、インスタンスファミリー内の最も小さいインスタンスサイズから大きいインスタンスサイズへ、正規化係数に基づいて適用されます。

インスタンスファミリーが同じであれば最も小さいインスタンスサイズから大きいインスタンスサイズへ適用されるようです。

なので、t2.xlarge のRI を購入しているアカウントで、t2.xlarge のEC2 1台とt2.large のEC2 1台がある場合、 小さいインスタンスタイプから割引が適応されますのでt2.large のEC2 1台のみに割引が適応され RI を適用する想定だったt2.xlarge インスタンスの月額料金の半分しか減額されていというような現象が起こる可能性があります。

こちらは特定のAZ を指定して購入したRI 、ベアメタル、占有テナントのRI 、 WindowsインスタンスRHEL 、および SLES のRI には適用されないようです。

RI 購入・再購入について

長期利用を前提として料金の割引が提供されるため、購入後のキャンセルはできません。 購入対象の選定や、購入時の操作は慎重に行う必要があります。

また、購入から1年または3年が経過し、有効期限が切れる(切れた)RI については、 RI は通常では「自動更新」という機能以前に「更新」という考え方がないため、 継続して RI を利用したい場合は「再度購入する」必要があります。

RIの購入手続きを実施には、数分から数時間の購入処理による待機時間が発生しますが即日適用されますので、 例えば、昨年4月1日に購入したRI と同じ内容をさらに一年継続したい場合には、 3月末日に購入するか4月1日に購入するのが最もコスト効率の良い方法となります。

別の方法として、既存のRI が期限切れになる頃の購入予約をキューに入れることができます。 これにより、サービスを切れ目なくRI を利用することもできます。

RI の購入予約をキューに入れる場合、リージョンは指定できますが、 ゾーンを指定したRI の購入予約や、他の販売者からのRI の購入予約を行うことはできません。

購入予約は3年先までキューに入れることができます。 予約した日時に、デフォルトの支払い方法を使用して購入が実行されます。 支払いが正常に行われると、割引が適用されます。

補足: 再度購入のタイミングとシステムの改修、更新時期を揃えると、 最新のインスタンスファミリーへの移行やスペック変更によって発生する オンデマンド料金をより削減しやすくなるかと思います。

同じ組織の別アカウントに自動的に適用されてしまう

RI はデフォルトで、組織のすべてのアカウントにRI の共有がオンになります。 AWSの利用が増えていくと組織単位でいくつかのアカウントを所持して運用していくこともあるかと思います。 この設定がオンの状態だと適応予定だったインスタンスではなく、別アカウントで運用しているインスタンスに割引が 適応されしまう恐れがあります。

この設定は、アカウントのリザーブインスタンスの共有をオフにすることが可能ですので、 アカウント間で共有予定がない場合はオフにするようにしてください。

RI とインスタンスID の紐付きについて

インスタンスを作成すると固有のID が付きますが、RIはインスタンスのユニークID 単位での課金ではありません。

RIの概念は購入したインスタンスサイズの利用権です。「t2.large の利用権」を購入すると、アカウント内にt2.large インスタンスが存在すれば自動的に割引されます。インスタンスの作り直しを行ってID が変わっても割引条件に合致していれば適用されます。

t2.large のRI インスタンスを4台購入した場合は、t2.large のインスタンス4台分の利用料に割引が適応されます。 4台分割引が適応されている状態で、別のt2.large のインスタンスを新しく作成した場合は 新しく作成されたインスタンスはオンデマンドの利用料となります。

インスタンスの稼働・停止時の料金について

RI は、一定期間分の料金を定額で支払う仕組みです。従ってインスタンスを削除する等で存在しない場合でも、その期間の払戻しは一切されませんので注意が必要です。

購入したRI のスペックを変更したらどうなるのか

購入したRI と異なるタイプやサイズに変更すると割引適用されなくなり、変更後のインスタンスにはオンデマンド料金が課金されるようになります。 原則としてサイズ変更後のインスタンスにあったRIを新規に購入する必要がありますのでご注意下さい。

有効期限の違うRI は結合はできません

t2.large 2台をスペックが大きいt2.xlarge のインスタンスに結合が可能と記載しましたが、 有効期限が同じt2.large 2台であればt2.xlarge へ結合は可能ですが、 有効期限が違う別のRI で購入した同じインスタンスタイプのt2.large 2台を結合することは不可能です。

購入時の注意点

購入したRI と実際に立ち上げたインスタンスが異なると割引が適用されません。 RI の買い間違えをすると、適用にならなかったインスタンスはオンデマンドの料金が課金されてしまいます。t2.large のRI を購入したのに、間違えて実際はt3.large を作成し起動していたりすると t3.large は通常のオンデマンド料金が請求されて来ます。