5
4

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

本ブログは、オラクル・クラウドの個人ブログの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
※、テナンシ・レベルにしてください。

作成開始
ガバナンスと管理 > リソース・スケジューラ
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インスタンスの自動起動・停止

ドキュメント

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?