8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI リソース・スケジューラでインスタンスの自動起動と停止を設定(お金を節約したい方必見)

Last updated at Posted at 2024-07-18

このシリーズの他の記事は、オラクル・クラウドの個人ブログ一覧 からご覧いただけます。

初めに

時はお金なり。使わないときにインスタンスを起動しっぱなしにするのはもったいないです。

インスタンスの停止忘れは、お金を落とすのと同じ

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割)も節約できることになります。これは無視できない大きな差異です。

サポート対象リソース

2024年5月(サービス新規リリース時点)
Standard Computeシェイプ、Autonomous Database、Base Databaseの3種類でした。

2025年4月29日
Base Databaseがサポート対象外となり、非常に残念です(訳が分かりません)。
一方で、新たにインスタンス・プールとファンクションがサポート対象に追加されました。

Base Databaseがサポート対象に復帰してほしいです。

他方法との比較

インスタンス・タイプ リソース・スケジューラ ネイティブの
スケジュール機能
CLI/APIで実現
Compute サポート対象
(Standardのみ)
なし 可能
Autonomous Database サポート対象 あり 可能
Oracle Base DB サポート対象外になった
(2025/4/29)
なし 可能

Autonomous DBの自動起動・停止を例に、リソース・スケジューラの利点と制限事項を他の方法と比較してみます。

項目 リソース・スケジューラ ネイティブの
スケジュール機能
CLI/API
OCIコンソールでの設定 Yes Yes No
コーディング作業 不要 不要 必要
実施端末 不要 不要 必要
分単位で細かく設定 Yes No
(時間単位のみ)
Yes
ローカルタイムゾーンの対応 No
(UTC時間)
No
(UTC時間)
Yes

Oracle Base Databaseはリソース・スケジューラのサポート対象から外れたため、自動起動・停止を行いたい方には、次の代替手段をご紹介します。
OCI-CLIを使用してインスタンスの起動・停止を実現する方法
この方法は、Oracle Base Databaseだけでなく、他の種類のインスタンスにも適用可能です。ぜひご参考になさってください。

リソース・スケジューラの使い方

事前準備
管理者ユーザーではない場合、スケジュールを作成するために、ユーザーに権限を付与する必要があります。

IAMポリシーの例:
Allow group ResourceScheduleManagers to manage resource-schedule-family in tenancy
※、テナンシ・レベルにしてください。

作成開始
ガバナンスと管理 > リソース・スケジューラ
image.png

「スケジュールの作成」を押す
image.png

基本情報
スケジュール名(必須):適当な名前を入力する
実行するアクション(必須):起動か停止を選択する
※、この例では、Computeインスタンスに対し、毎日の停止スケジュールを作成する。

リソース
リソースの選択方法:静的(デフォルトのまま)
一覧から対象のインスタンスを選択して、次へ。

スケジュール
間隔:選択肢は、"1回のみ"、"毎日"、"毎週"、"毎月"の4つがある。この例では、毎日のJST 18時を指定する。
時間: 入力はUTC時間となるので、ご注意を!

曜日を指定したい場合、次の例をご参照ください(平日のJST 18:30に停止する例)。

確認
入力した内容を確認し、「スケジュールの作成」を押す。
image.png

作成後
ステータスが、有効になることを確認する。
image.png

スケジュールの詳細画面に、OCIDをコピーしてください。
image.png

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'}

動作確認
予定の時刻になったら、インスタンスが停止されることを確認します。
スケジュールの一覧:
image.png

作業リクエスト(スケジュールの詳細画面):
image.png

スケジュール設定と動作確認はここまで完了です。

トラブルシューティング

現象-1: スケジュールが作成できない

image.png
考えられる理由: ユーザーがスケジュールを作成する権限がない。
対策:次のようにIAMポリシーを作成する。
Allow group ResourceScheduleManagers to manage resource-schedule-family in tenancy

現象-2:インスタンスが見つからない

image.png
考えられる理由: ユーザーがリソースを参照する権限がない。
対策:次のようにIAMポリシーを作成する。
Allow group ResourceScheduleManagers to read <resource_type> in tenancy

※、<resource_type>を置き換えてください。
例:all-resources, instances, autonomous-databases, database-family

現象-3:スケジュールの実行が失敗した

image.png

考えられる理由: 関連する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インスタンスの自動起動・停止
コスト節約術

ドキュメント
リソース・スケジューラの概要
サンプル・ポリシー

8
5
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
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?