本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
時はお金なり。使わないときにインスタンスを起動しっぱなしにするのはもったいないです。
2024年5月21日に、新しいサービスであるOCIリソース・スケジューラがリリースされました。これを利用することで、インスタンスの起動および停止のスケジュール設定がより簡単になります。待ちに待った機能がついに登場しました。(この機能自体は簡単なのに、なぜ長い間リリースされなかったのか、とても興味深いです。)
運用ケース:指定日付(曜日)に、指定したリソースを自動に起動・停止させる。
試算してみましょう。
1ヶ月を30日と仮定すると、1ヶ月は合計で30日 × 24時間 = 720時間になります。24時間稼働させる場合、インスタンスは1ヶ月720時間で課金されます。簡略のため、OCPU per hour以外の費用(ストレージ等)は考慮しないことにします。
例として、インスタンスを平日の毎日8:30から18:30まで(10時間)稼働させ、週末と祝日は稼働させないとします。
1ヶ月の稼働日数を22日と仮定すると、毎日定時に起動・停止させることで、1ヶ月で合計500時間 (720 - 22*10)を節約できます。つまり、OCPU per hourに関連する費用は、停止なしの場合から69.4%(約7割)も節約できることになります。これは無視できない大きな差異です。
対応リソース
Standard Computeシェイプ、Autonomous Databaseと Base Databaseの3種類です。
インスタンス・タイプ | リソース・スケジューラ | ネイティブの スケジュール機能 |
CLI/APIで実現 |
---|---|---|---|
Compute | 対応 (Standardのみ) |
なし | 可能 |
Autonomous Database | 対応 | あり | 可能 |
Oracle Base DB | 対応 | なし | 可能 |
- 従来のやり方、「OCI-CLIを使用してインスタンスの起動・停止を実現する方法」について、こちらの記事をご参照ください。
- ComputeインスタンスやBase DBにも、ADBのようなネイティブのスケジュール機能があれば嬉しいです。
利用方法
事前準備
管理者ユーザーではない場合、スケジュールを作成するために、ユーザーに権限を付与する必要があります。
IAMポリシーの例:
Allow group ResourceScheduleManagers to manage resource-schedule-family in tenancy
※、テナンシ・レベルにしてください。
基本情報
スケジュール名(必須):適当な名前を入力する
実行するアクション(必須):起動か停止を選択する
※、この例では、Computeインスタンスに対し、毎日の停止スケジュールを作成する。
リソース
リソースの選択方法:静的(デフォルトのまま)
一覧から対象のインスタンスを選択して、次へ。
スケジュール
間隔:選択肢は、"1回のみ"、"毎日"、"毎週"、"毎月"の4つがある。この例では、毎日のJST 18時を指定する。
時間: 入力はUTC時間となるので、ご注意を!
曜日を指定したい場合、次の例をご参照ください(平日のJST 18:30に停止する例)。
IAM ポリシーの作成
ポリシーを作成しないとスケジュールの実行が失敗しますので、ご注意ください。
-
ステートメント:
Allow any-user to manage <RESOURCE_TYPE> in compartment <TARGET_COMPARTMENT_NAME> where all {request.principal.type='resourceschedule', request.principal.id='<ocid_of_resourceschedule>'}
※、<RESOURCE_TYPE>
、<TARGET_COMPARTMENT_NAME>
とスケジュールのOCIDを置き換えてください。 -
例:
Allow any-user to manage instance in compartment PoC where all {request.principal.type='resourceschedule', request.principal.id='ocid1.resourceschedule.oc1.ap-tokyo-1.amaa...lkcza'}
動作確認
予定の時刻になったら、インスタンスが停止されることを確認します。
スケジュールの一覧:
スケジュール設定と動作確認はここまで完了です。
トラブルシューティング
現象-1: スケジュールが作成できない
考えられる理由: ユーザーがスケジュールを作成する権限がない。
対策:次のようにIAMポリシーを作成する。
Allow group ResourceScheduleManagers to manage resource-schedule-family in tenancy
現象-2:インスタンスが見つからない
考えられる理由: ユーザーがリソースを参照する権限がない。
対策:次のようにIAMポリシーを作成する。
Allow group ResourceScheduleManagers to read <resource_type> in tenancy
※、<resource_type>
を置き換えてください。
例:all-resources, instances, autonomous-databases, database-family
現象-3:スケジュールの実行が失敗した
考えられる理由: 関連するIAM ポリシーがないか、ポリシーステートメントが正しくない。
対策:次のようにIAMポリシーを作成してから、再度試してみてください。
Allow any-user to manage instance in compartment PoC where all {request.principal.type='resourceschedule', request.principal.id='<ocid_of_resourceschedule>'}
以上
楽しくお金を節約しましょう。Happy money saving!
関連記事
オラクル・クラウドの個人ブログ一覧
OCIインスタンスの自動起動・停止