はじめに
OCI(Oracle Cloud Infrastructure)を利用していて、意図せずコンピュートインスタンスを起動させたままにしてしまった経験がある方も多いのではないでしょうか。たしかに、OCIはコストパフォーマンスの高いクラウドサービスですが、適切に管理しないとそれ相応のコストがかかるのも事実です。そのため、長らくOCIユーザーから期待されていた、自動停止・自動起動を実現できる新サービスである「OCI Resource Scheduler」が2024年5月21日にリリースされました!
本記事では、OCI Resource Schedulerの概要と機能について紹介します。
OCI Resource Schedulerとは
OCI Resource Schedulerは、OCI上のコスト管理サービスの1つとして提供されており、テナント内のリソースが不要な時に自動的に停止し、必要な時に自動的に再起動して、コスト削減を手助けするツールです。記事執筆時点(2024年10月)でサポートされているリソースは以下の3つで、今後対応するリソースが増えていく予定です。
- コンピュート・インスタンス
- Autonomous Database
- OCI Functions
また、OCI Resource SchedulerはOCI IAMサービスと統合されており、テナントに作成されるリソースです。そして、OCI Resource Schedulerで実行できるアクションは「起動」と「停止」の2つのみで、シンプルで分かりやすいアクションとなっています。
詳しい情報に関しては、以下のドキュメントをご参照ください。
参考: リソース・スケジューラ概要
参考: スケジュールの作成
参考: スケジュールされた関数のサポート
前提条件
本記事で紹介する手順の前提条件は以下となります。
- ポリシーを追加できる権限を持っていること
- 以下のドキュメントを参考に、コンピュートインスタンスを作成済みであること
- 以下のドキュメントを参考に、ADBを作成済みであること
OCI Resource Schedulerを利用するためのポリシーの付与
まずは、OCI Resource Schedulerを利用する上で必要なポリシーの付与を行います。管理者以外がOCI Resource Schedulerのスケジュールを作成するには、ユーザーに権限を許可するIAMポリシーを付与する必要があります。グループ名は任意のグループを記述してください。また、付与はテナントレベルで行ってください。
1 |
Allow group <グループ名> to manage resource-schedule-family in tenancy |
参考:スケジュールの作成
OCI Resource Schedulerの設定手順
続いて、OCI Resource Schedulerの設定手順について詳しく説明していきます。今回はコンピュートインスタンスに対してスケジュールを作成しますが、Autonomous Databaseなどでも同様の手順でスケジュールを作成できます。
-
ハンバーガーメニューより「ガバナンスと管理」をクリックし、「リソース・スケジューラ」の中から「スケジュール」をクリックします。
-
リソーススケジューラの詳細画面から「スケジュールの作成」をクリックします。
-
「基本情報」の画面では、スケジュール名、説明、実行アクションを選択することが出来ます。
- 実行アクションは「起動」と「停止」の2つから選択することになります。今回は「起動」を選択します。
- 実行アクションは「起動」と「停止」の2つから選択することになります。今回は「起動」を選択します。
-
「リソース」画面では、スケジュールアクションを実行するリソースを指定することが出来ます。
- リソースの選択方法には「静的」選択と「動的」選択の2種類あります。「静的」選択では、明示的に特定のリソースを選択する形となりますが、「動的」選択ではフィルタ(条件指定)した中でキューに表示される最初の25個が自動的に選択される形となります。
- フィルタでは、「コンパートメント」と「リソース・タイプ」からフィルタリングすることが出来ます。リソース・タイプでは、記事執筆時点(2024年10月)で、「Instance」「InstancePool」「AutonomousDatabase」「OCI Functions」から選択することが出来ます。
※「静的」選択、「動的」選択のどちらも1つのリソーススケジューラで選択できるリソースの数の最大数は25個となっています。そのため、それ以上のリソースをスケジュールしたい場合は、別途スケジュールを新たに作成する必要があります。詳しくは以下を参照ください。
参考:Resource Management
-
「スケジュール」画面では、アクションを実行するスケジュールを指定することが出来ます。
- 間隔は1回、毎時、毎日、毎週、毎月から選択することが出来ます。
- Day(s) of the weekでは、実行したい曜日を選択することが出来ます。
- 時間では、アクションを実行したい時間をUTCのみで指定することが出来ます。
- 終了日はオプションのため、指定しなくても作成することが出来ます。
-
「確認」画面で、作成したスケジュールを確認し、問題がなければ「スケジュールの作成」をクリックします。
-
しばらくすると、「起動」スケジュールが作成され「ACTIVE」状態となります。ここで、作成されたOCIDをコピーしメモしておきます。
-
再度、ソーススケジューラの詳細画面から「スケジュールの作成」をクリックし、「停止」アクション用のスケジュールを作成していきます。実行するアクションは「停止」を選択してください。
-
「リソース」画面では、先程選択したものと同じリソースを選択してください。
-
「スケジュール」画面では、停止アクションじ実行するスケジュールをUTCで指定します。
-
「確認」画面で問題がなければ、「スケジュールの作成」をクリックします。
-
しばらくすると、「停止」スケジュールが作成され「ACTIVE」状態となります。ここで、作成されたOCIDをコピーしメモしておきます。
-
「起動」と「停止」の2つのアクションに関するスケジュールが作成されていることを確認します。
OCI Resource Schedulerのポリシー付与
OCI Resource Schedulerのアクションを実行させるには、先ほどとは別のIAMポリシーが必要です。IAMポリシーがない場合、スケジュールを作成することはできますが、アクションが実行されないため、失敗してしまいます。そのため、スケジュールによるリソース管理を許可するポリシーを作成する必要があります。以下は、許可するポリシーの例です。先ほどメモしたOCIDを使用します。
1 2 |
Allow any-user to manage all-resources in tenancy where all {request.principal.type='resourceschedule', request.principal.id='<起動スケジュールのOCID>'} Allow any-user to manage all-resources in tenancy where all {request.principal.type='resourceschedule', request.principal.id='<停止スケジュールのOCID>'} |
参考:スケジュールの作成
OCI Resource Schedulerのアクションの確認
最後に、実際に「停止」と「起動」のアクションが実行されているか確認していきます。
- アクションの確認のために、インスタンスを起動させ続けておきます。
- 「停止」スケジュールでは平日の10:00(UTC)にインスタンスが自動停止するように設定しましたが、問題なく停止できたことが確認します。
- 「起動」スケジュールでは平日の00:00(UTC)にインスタンスが自動起動するように設定しましたが、問題なく起動されていることが確認します。
- 念のためインスタンス側でも起動・停止が確認できるよう、メトリックを確認します。以下のコンピュートの詳細画面にあるメトリック図より、10:00(UTC)に自動停止し、00:00(UTC)に自動起動していることが分かります。
まとめ
本ブログでは、長らくOCIユーザーから期待されていたリソースの自動起動・停止サービスであるOCI Resource Schedulerの概要と設定方法について紹介しました。自動でリソースを起動・停止してくれるため、コスト削減を実現したい方には必見のサービスです。今後も対応するリソースが増えていく予定なので、このサービスの成長に期待していきたいと思います。