うるう年にかかる EC2 の Reserved Instances / Savings Plans の終了日について
来る2024年はうるう年なのですが Reserved Instances / Savings Plans の1年や、3年の期間に2月29日が含まれているのか気になったので確認しました。 とくに公式ソースを確認したかったので見つけたドキュメントのリンクをまとめています。
対象は EC2 の Reserved Instances、ECS や Lambda にも適用できる Savings plans、ついでに RDS の Reserved DB Instances を確認しています。
確認結果
RI/SP の有効期間中(開始日から終了日)にうるう年(2月29日分)が含まれるとRI/SP の終了日が1日短くなる。
公式ドキュメントより
公式なソースから1年とは何日換算なのか、うるう年の扱いはどうなのかを確認しました。
EC2 Reserved Instances
EC2 の Reserved Instances における1年は31,536,000秒であり、日に置き換えると365日です。同様に3年 RI では1095日です。EC2 の RI は秒単位でカウントされていました。2月29日分はどうやら含まれないようです。
You can purchase a Reserved Instance for a one-year or three-year commitment, with the three-year commitment offering a bigger discount. ・One-year: A year is defined as 31536000 seconds (365 days). ・Three-year: Three years is defined as 94608000 seconds (1095 days). Reserved Instances - Amazon Elastic Compute Cloud
Dedicated Host Reservations
Dedicated Host の RI の全額前払いの例ですと1年または3年契約があるという記載はありましたが、それ以上の詳細な情報については確認できませんでした。
All Upfront—Provides the lowest effective price. Available in one-year and three-year terms and covers the entire cost of the term upfront, with no additional future charges. Dedicated Hosts - Amazon Elastic Compute Cloud
Savings Plans
Savings Plans では1年または3年のコミットメントを選ぶという記載はありましたが、それ以上の詳細な情報については確認できませんでした。
Term: Your term commitment in years. Choose a 1-year or 3-year term. Purchasing Savings Plans - Savings Plans
RDS Reserved DB Instances
ついでによく使う RDS も調べておきます。 RDS の Reserved DB Instancesでは1年または3年のコミットメントが必要という記載はありましたが、それ以上の詳細な情報については確認できませんでした。
The terms for a reserved DB instance involve a one-year or three-year commitment. Reserved DB instances for Amazon RDS - Amazon Relational Database Service
確認してみる
ドキュメントからは EC2 の RI しか詳細な情報を得られませんでした。 実際の RI/SP から、うるう年の2024年2月29日を含む1年 RI/SP と、うるう年を含まない1年 RI を開始日と、終了日を確認します。
- 2024年2月29日を含む1年 RI/SP は赤枠で表示
- うるう年を含まない1年 RI は青枠で表示
EC2 Reserved Instances
赤枠のうるう年を含む RI の終了日は1日前になっています。1年 RI は365日換算でしたので2月29日で1日増えている分、終了日が1日前になりました。ドキュメント説明通りです。
Savings Plans
Compute Savings Plans
赤枠のうるう年を含む RI の終了日は1日前になっています。 ドキュメントの記述からは1年 RI は何日(何秒)換算なのかわかりませんでしたが、EC2 同様に365日(31,536,000秒)換算されているようです。
EC2 Instance Savings Plans
赤枠のうるう年を含む RI の終了日は1日前になっています。こちらもドキュメントの記述からわかりませんでしたが EC2 の RI と同様の結果でした。
RDS Reserved DB Instances
赤枠のうるう年を含む RI の終了日は1日前になっています。こちらもドキュメントの記述からわかりませんでしたが EC2 の RI と同様の結果でした。
まとめ
- 1年 RI/SP は365日(31,536,000秒)換算される
- うるう年は1年が366日
- うるう年にかかる1年または3年 RI/SP は1日足りなくなり、終了日が1日前倒しになる
気をつけたいこと
うるう年を含む RI は期限が1日前倒しになることがわかりました。この影響を受けて不都合がありそうなケースを考えてみます。
RI/SP の更新日はカレンダーで管理している
何かしらカレンダーで毎年 RI/SP の期限を管理されている場合、いつも通り1年後と記録すると終了日を誤る可能性があります。管理にはお気をつけください。
Cost Explorer の通知機能がありますのでこちらの設定もご検討ください。
RI 期限切れ通知の対象に Dedicated Hosts の RI は含まれていませんのでご注意ください。
毎年同日に RI/SP を更新したい場合
RI/SP は必ず m月1日に更新したい、毎年同日に RI を更新したい場合は1日オンデマンド稼働して更新日を調整してもらう必要があります。
予期せぬオンデマンド費用が発生したと焦らぬようご認識ください。
月またぎ、期またぎになる場合
たとえば2023年4月1日に1年 RI/SP を購入した場合は終了日は2024年3月31日になります。RI/SP の有効期限の切れ目を最小限に押さえて更新するには1日前倒しの日付で更新しないといけません。終了日が1日前倒しになることで、月や期をまたぎ予算の扱いがややこしくなる企業様もいらっしゃるかと思います。お気をつけください。
社内調整が大変でしたら1日オンデマンド稼働した方が諸々のことを考えると安いという判断もあるかと思います。
おわりに
公式ドキュメントのリンクをまとめておきたい、「月や、期をまたぐと大変なこともあるな」と思ったのですが、次のうるう年ときにはなにも覚えていないので書き残しておきました。
次のうるう年(2028年)のときにはサービスがアップデートされたり、ドキュメントも更新されている可能性があります。そのタイミングでドキュメントをご確認いただき最新情報をご確認いただければ幸いです。