【コスト削減】OCI Resource Scheduler タグ活用でCompute自動起動停止 完全手順
OCI Resource Schedulerは、ComputeインスタンスやAutonomous Databaseなどのリソースを自動的に開始・停止させるサービスで、コスト最適化に役立ちます。
特にタグを活用することで、動的に対象リソースをフィルタリングでき、初心者でも管理しやすくなります。
今回は、タグを活用した OCI Resource Scheduler の使い方を手順ベースでまとめます。
日々の OCI 運用でのコスト削減や運転自動化の一助になれば幸いです。
OCI Resource Schedulerとは?
OCI Resource Schedulerは、テナンシー内のリソースをスケジュールに基づいて自動制御するサービスです。
主なアクションは START_RESOURCE と STOP_RESOURCE で、開発環境の夜間停止などにより無駄な課金を削減できます。
- 対応リソース:
Compute instances : 単一の仮想マシンインスタンス。
Compute instance pools : インスタンスプール(自動スケーリンググループ)。
Autonomous Databases : Autonomous Database(自動管理データベース)。
Function resources : Oracle Functions(サーバーレス関数)。 - 利点: 手動操作不要、タグベースの柔軟なフィルタ、cronやiCal形式のスケジュール対応。
なぜタグを活用するのか?
タグを活用した運用は、コスト最適化の観点でも一般的なベストプラクティスです。
メリット
- 動的・自動対象化 : 新規作成リソースもタグ条件で自動対象に(都度スケジュール編集不要)。
- 誤動作リスク低減 : 全リソースではなくタグ付けで特定グループ(例: dev環境)のみ制御。
- スケーラビリティ向上 : タグでリソースを論理グループ化、1スケジュール最大200リソース処理可能。複数スケジュールで数千規模にも対応。
- コスト分析連携 : タグで課金割り当てや監視強化。
デメリット
- 初期設定の手間 : 全対象リソースにタグ手動/Tag Defaults適用必要。
- 管理負荷増 : タグ命名規則遵守と一貫性維持が求められる。
- 動作不具合リスク : タグ未適用やフィルタミスで期待通りに動作しない場合あり。
-
200リソース上限 : 1スケジュールあたり最大200リソースまで処理可能。
タグ条件に一致するリソースが200を超える場合、先頭200件のみ対象となるため、必要に応じて複数スケジュールを作成。
OCI タグについて
- テナント内の複数コンパートメント内にまたがる多くのリソースを管理可能
- タグに基づいた一括アクション(起動/停止)やコスト管理を実施可能
- タグには以下2種類があります
- フリーフォーム・タグ
・キーと値のみで構成される
・ユーザが各リソースに自由に情報を追加できる
・柔軟性と即時性が高い - 定義済みタグ
・管理者側であらかじめ作成されたタグ・ネームスペース、タグ・キーをリソースに付与して利用する
・一貫性/セキュリティ確保されガバナンス強化実現
今回は定義済みタグを利用します。
詳細は以下の通りです。
参考:https://speakerdeck.com/ocise/oci-kosutoguan-li?slide=8
デモのシナリオ
実際にタグ作成、リソースへのタグ付け、スケジュールの作成を実施しようと思います。
簡単にはなりますが、以下の流れで実施します。
①起動用のOCI タグの作成
②停止用のOCI タグの作成
③リソースへのタグ付け(①②で作成したものを付与)
④自動起動用スケジュールの作成
⑤自動停止用スケジュールの作成
ポリシー設定
前提としてリソース・スケジューラを利用するには以下2つが必要です
-
ユーザ向けポリシー(=リソース・スケジューラを操作する権限)
以下はテナンシ内のリソース・スケジューラを操作を許可するポリシーです。
ResourceScheduleManagers は任意のグループ名に読み替えてください。Allow group ResourceScheduleManagers(任意) to manage resource-schedule-family in tenancy -
リソース・スケジューラ向けポリシー(=OCI 内部の「スケジュール用リソース・プリンシパル」用の権限)
以下はテナンシ内のどのスケジュールでも、インスタンス操作を許可するポリシーです。
※こちらは作成するだけでユーザに付与などする必要はありませんAllow any-user to manage instance in tenancy where all { request.principal.type = 'resourceschedule' }
参考:https://docs.oracle.com/ja-jp/iaas/Content/resource-scheduler/tasks/listing-schedules.htm
OCIタグの作成方法
Resource Schedulerのタグ活用前に、タグネームスペースとタグキーを作成します。
Console/CLI/Terraformに対応しています。
今回はわかりやすくするために、起動 / 停止時間を表すタグを作成し、Compute インスタンスに付与する例で実施します。
Console手順
以下「①起動用のOCI タグの作成」「②停止用のOCI タグの作成」を実施します。
-
ガバナンスと管理 > タグ・ネームスペース選択。
-
タグ・ネームスペースの作成:
- ネームスペース定義名:
Operations(任意)。 - 説明:○○用のネームスペース(任意)。
- ネームスペース定義名:
-
タグ・ネームスペース内でタグ・キー定義の作成(起動用):
4.タグ・ネームスペース内でタグ・キー定義の作成(停止用):
上記と同様に停止用のタグ定義(Stop-Schedule)を作成します
リソースへのタグ付け
以下「③リソースへのタグ付け(①②で作成したものを付与)」を実施します。
以下3パターンでタグ付けが実施できます
- リソース作成時に手動でタグ追加。
- リソース編集にて手動でタグ追加。
-
タグのデフォルト設定で新規リソースに自動でタグ追加。
- アイデンティティとセキュリティ > コンパートメント > 任意のコンパートメント > タグのデフォルト > タグのデフォルトの作成。
今回は既存のComputeに対して手動で先ほど作成したタグを追加します。
スケジュール作成手順
今回のシナリオは以下を想定してスケジュールを作成します。
・開発環境を想定し、平日の月曜日~金曜日 6:00(JST)~20:00(JST)のみ起動。
・デモのため1台のみ対象とする。
・注意点としてスケジュールはUTC時間で登録するため時差を考慮する必要がある。
Console手順
起動用のスケジュール作成
以下「④自動起動用スケジュールの作成」を実施します。
-
ガバナンスと管理 > リソース・スケジューラ選択。
-
「スケジューラの作成」を選択
<基本情報>
スケジュール名: Instance-Start-6:00(任意)
スケジュールの説明: インスタンスの起動(任意)
実行するアクション: 起動
コンパートメント:(任意)
<リソース>
リソースの選択方法 :動的
フィルタ :タグ > operations [Start-Schedule] > 一致する値を指定 > Key Value [6:00]
※Key Valueは手動で入力する必要があります。
想定のリソースがリストされていることを確認します。
(リストされていない場合は、Key Valueの値が誤っている可能性があります)
<スケジュール>
スケジュールタイプ :フォーム・インスタンス
間隔: 毎週(任意)
繰り返し間隔: 1(任意)
Day(s) of the week: 日 月 火 水 木 ※UTC時間の時差を考慮する必要あり※
時間: 21:00 ※UTC時間を24時間表記する必要あり※
開始日:(任意)
終了日:(任意)空白の場合はずっと
サマリー: 想定のスケジュールになっているか確認
停止用のスケジュール作成
以下「⑤自動停止用スケジュールの作成」を実施します。
-
ガバナンスと管理 > リソース・スケジューラ選択。
-
「スケジューラの作成」を選択
<基本情報>
スケジュール名: Instance-Stop-20:00(任意)
スケジュールの説明: インスタンスの停止(任意)
実行するアクション: 停止
コンパートメント:(任意)
<リソース>
リソースの選択方法 :動的
フィルタ :タグ > operations [Stop-Schedule] > 一致する値を指定 > Key Value [20:00]
想定のリソースがリストされていることを確認します。
<スケジュール>
スケジュールタイプ :フォーム・インスタンス
間隔: 毎週(任意)
繰り返し間隔: 1(任意)
Day(s) of the week: 月 火 水 木 金
時間: 11:00 ※UTC時間を24時間表記する必要あり※
開始日:(任意)
終了日:(任意)空白の場合はずっと
サマリー :想定のスケジュールになっているか確認
スケジュールの稼働確認
作成したスケジュールが想定通り稼働しているか確認します。
スケジュールのステータス、リソース基準、スケジュール、アクション、次の実行日に誤りがないか確認します。
①スケジュールが起動した後、正常終了しているか確認します。
②対象リソースが問題なく、起動/停止がされているか確認します。
※該当時間に確認できない場合はモニタリング等で確認。
注意点
- UTC時間使用 :JST=UTC+9を考慮。
例.起動6:00 JST→UTC前日21:00になるので曜日のズレに注意 - 制限 :スケジュール1つあたり最大200リソース。超過時は静的/複数スケジュールで対応。
- タグ :フリーフォーム・タグではなく、定義済みタグを利用することを強く推奨。
- テスト :必ず小規模タググループで検証後、本番適用すること。
- エラーハンドリング :
○スケジュールが作成できない場合は、ユーザ側のポリシーを確認
○スケジュールが正常稼働しているのにリソースがゼロになっている場合
・対象リソースがフィルタ条件で正しく検索されていることを確認
・リソース・スケジューラ向けポリシーを確認
最後に
OCI Resource Scheduler とタグを組み合わせることで、開発環境などの定型的な起動・停止作業を自動化し、手動オペレーションの削減とコスト最適化を同時に実現できます。
また、定義済みタグを使っておくことで、リソースの追加・削除が発生してもスケジュール側の設定変更を最小限に抑えられ、運用のガバナンス強化にもつながります。
まずは少数の検証用コンパートメントや開発環境から試し、タグ設計やスケジュールの粒度をチーム内で合わせてから本番環境へ展開していくのがおすすめです。
この記事が、日々の OCI 運用の自動化やコスト削減を進める際の一つの参考になれば幸いです。













