VM インスタンスの起動と停止をスケジュールする


インスタンス スケジュールを使用すると、仮想マシン(VM)インスタンスの起動と停止を自動的に実行できます。インスタンス スケジュールを使用して VM インスタンスのデプロイを自動化することで、費用を最適化し、VM インスタンスをさらに効率的に管理できます。インスタンス スケジュールは、繰り返しのワークロードと 1 回限りのワークロードの両方に使用できます。たとえば、インスタンス スケジュールを使用して、VM インスタンスを業務時間中にのみ実行したり、1 回限りのイベントに容量を指定したりすることができます。

インスタンス スケジュールを使用するには、起動と停止の動作の詳細を指定したリソース ポリシーを作成し、ポリシーを 1 つ以上の VM インスタンスに接続します。

始める前に

必要なロール

インスタンス スケジュールを使用するには、そのために必要な Identity and Access Management(IAM)ロールを、次のプリンシパルに付与する必要があります。

  • プロジェクトの Compute Engine サービス エージェント。これは、インスタンス スケジュールを VM 上で実行するために必要です。

    インスタンス スケジュールの作成後にこれらの権限を取り消すと、インスタンス スケジュールが通知なしに機能しなくなる可能性があります。インスタンス スケジュールが正常に実行されたことを確認するには、定期的に監査ログを確認する必要があります。

  • インスタンス スケジュールを作成、管理、または使用するユーザー アカウントまたはサービス アカウント。

Compute Engine サービス エージェントに必要なロール

Compute Engine サービス エージェントにインスタンス スケジュールの実行に必要な権限が付与されるようにするには、Compute Engine サービス エージェントにプロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)の IAM ロールを付与するよう管理者に依頼します。ロールの付与の詳細については、アクセス権の管理をご覧ください。

この事前定義ロールには、インスタンス スケジュールを実行するために必要な権限が含まれています。必要な権限を正確に確認するには、「必要な権限」セクションを開いてください。

必要な権限

インスタンス スケジュールを実行するには、次の権限が必要です。

  • compute.instances.start
  • compute.instances.stop

管理者は、Compute Engine サービス エージェントにカスタムロールや他の事前定義ロールがあるこれらの権限を付与することもできます。

ロールが必要なユーザーまたはサービス アカウント

ユーザーまたはユーザーのサービス アカウントにインスタンス スケジュールの作成と管理に必要な権限を付与されるようにするには、ユーザーまたはユーザーのサービス アカウントにプロジェクトまたは組織に対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)の IAM ロールを付与するよう管理者に依頼します。ロールの付与の詳細については、アクセス権の管理をご覧ください。

この事前定義ロールには、インスタンス スケジュールを作成、管理するために必要な権限が含まれています。必要な権限を正確に確認するには、「必要な権限」セクションを開いてください。

必要な権限

インスタンス スケジュールを作成、管理するには、次の権限が必要です。

  • インスタンス スケジュールの作成: compute.resourcePolicies.create
  • インスタンス スケジュールの一覧表示: compute.resourcePolicies.list
  • インスタンス スケジュールの記述: compute.resourcePolicies.get
  • インスタンス スケジュールの削除: compute.resourcePolicies.delete
  • 新しい VM へのインスタンス スケジュールの接続:
    • compute.instances.create
    • compute.resourcePolicies.use
    • compute.instances.addResourcePolicies
  • 既存の VM へのインスタンス スケジュールの接続:
    • compute.resourcePolicies.use
    • compute.instances.addResourcePolicies
  • VM からのインスタンス スケジュールの削除:
    • compute.resourcePolicies.use
    • compute.instances.removeResourcePolicies

管理者は、ユーザーまたはユーザーのサービス アカウントに、カスタムロールまたは他の事前定義ロールがあるこれらの権限を付与することもできます。

制限事項

  • インスタンス スケジュールは、インスタンス スケジュールと同じリージョンにある VM インスタンスにのみ接続できます。
  • 各 VM インスタンスに接続できるのは 1 つのインスタンス スケジュールのみですが、各インスタンス スケジュールは最大 1,000 個の VM インスタンスに接続できます。
  • インスタンス スケジュールでは容量が保証されないため、スケジュールした VM インスタンスに必要なリソースがスケジュールした時間に使用できない場合、VM インスタンスがスケジュールされた時間に起動しない可能性があります。起動前に VM インスタンスを予約して容量を確保することもできますが、予約を自動的にスケジュールすることはできません。
  • インスタンス スケジュールは、指定された時間にしか VM インスタンスの起動および停止を行いませんが、VM インスタンスはいつでも手動で起動および停止できます。たとえば、毎日午前 8 時に起動し、毎日午後 5 時に停止するようにスケジュールが設定されているとします。午後 4 時に停止された VM インスタンスにそのスケジュールを接続した場合、その前に手動で起動しない限り、翌日の午前 8 時までその VM インスタンスは起動しません。
  • スケジュールされた VM インスタンスは、起動オペレーションまたは停止オペレーションを開始するスケジュール時刻よりも最大 15 分遅れることがあります。特定の時間に VM インスタンスを起動または停止する必要がある場合は、目的の時間の 15 分前までにオペレーションのスケジュールを設定し、各オペレーションは少なくとも 15 分以上の間隔を空けてスケジュールします。
  • 起動オペレーションと停止オペレーションの間隔が 15 分未満の場合、スケジューラが失敗する可能性があります。これは、停止オペレーションが起動オペレーションより前に実行されて、起動オペレーションを実行できなくなる可能性があるためです。
  • 各インスタンス スケジュールでは、1 時間あたり最大 1 つの起動オペレーションおよび停止オペレーションを設定できます。
  • インスタンス スケジュールは編集できません。1 つ以上の VM インスタンスの既存のインスタンス スケジュールを変更するには、既存のインスタンス スケジュールを削除してから、新しいインスタンス スケジュールを作成して接続します。

インスタンス スケジュールを管理する

Google Cloud コンソール、Google Cloud CLI、Compute Engine API のいずれかを使用して、インスタンス スケジュールの作成、一覧表示、記述、削除を行います。

インスタンス スケジュールを作成する

VM インスタンスが自動的に起動または停止する時間を示すインスタンス スケジュールを作成します。作成するインスタンス スケジュールはリソース ポリシーであり、VM インスタンスに対する接続または削除に使用できます。

コンソール

  1. Google Cloud コンソールの [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. ページ上部にある [インスタンス スケジュール] タブをクリックします。

  3. [ スケジュールを作成] をクリックします。[スケジュールの作成] ペインが開きます。

  4. [名前] を入力します。

  5. (省略可)[説明] を入力します。

  6. [リージョン] プルダウン メニューで、このインスタンス スケジュールのロケーションを選択します。

  7. インスタンス スケジュールが、接続された VM インスタンスの起動と停止を行う時間を定義します。特定の時間に VM インスタンスを起動または停止する必要がある場合は、目的の時間の 15 分前までにオペレーションのスケジュールを設定します。起動と停止の各オペレーション間には、少なくとも 15 分の間隔を設けてください。

    デフォルトの [起動時間]、[停止時間]、および [頻度] を使用するか、より複雑なスケジュールの構成をする場合は、cron 式を使用します。

    • デフォルトのフィールド:

      1. [起動時間] と [停止時間] のいずれか、または両方を入力します。
        • [起動時間] に「」と入力またはクリックして、VM インスタンスの起動時間を選択します。
        • [停止時間] に「」と入力またはクリックして、VM インスタンスの停止時間を選択します。
      2. パネルの下部にある [頻度] プルダウン メニューで、[起動時間] と [停止時間] を繰り返す頻度を選択します。
    • cron 式:

      1. cron 式を有効にするには、ペインの上部にある [CRON 式を使用する] 切り替えボタンをクリックします。
      2. [CRON 式を起動] と [CRON 式を停止] の一方または両方を入力します。
        • [CRON 式を開始] フィールドに、VM インスタンスを起動する時間を記述する cron 式を入力します。
        • [CRON 式を停止] フィールドに、VM インスタンスを停止する時間を記述する cron 式を入力します。
  8. [タイムゾーン] プルダウン メニューで、[起動時間] と [停止時間] のタイムゾーンを選択します。

  9. 省略可: [開始日] フィールドで、 を入力またはクリックして、このインスタンスのスケジュールを開始する日時を選択します。省略すると、スケジュールはすぐに有効になります。

  10. 省略可: [終了日] フィールドに を入力またはクリックして、このインスタンスのスケジュールを終了する日時を選択します。省略すると、スケジュールは無期限に有効になります。

  11. [送信] をクリックします。

gcloud

gcloud CLI を使用してインスタンス スケジュールを作成するには、gcloud compute resource-policies create instance-schedule コマンドを使用します。

gcloud compute resource-policies create instance-schedule SCHEDULE_NAME \
    [--description='SCHEDULE_DESCRIPTION'] \
    [--region=REGION] \
    [--vm-start-schedule='START-OPERATION_SCHEDULE'] \
    [--vm-stop-schedule='STOP-OPERATION_SCHEDULE'] \
    [--timezone=TIME_ZONE] \
    [--initiation-date=INITIATION_DATE] \
    [--end-date=END_DATE]

次のように置き換えます。

  • SCHEDULE_NAME: 新しいインスタンス スケジュールの名前。
  • SCHEDULE_DESCRIPTION: 省略可。新しいインスタンス スケジュールの説明。
  • REGION: 省略可。このインスタンス スケジュールに接続する VM インスタンスが配置されているリージョン。
  • 次のうち少なくとも 1 つを指定します。
    • START-OPERATION_SCHEDULE: 接続された VM インスタンスが起動する時間を示すスケジュール。cron 式の形式で表されます。特定の時間に VM インスタンスを起動する必要がある場合は、目的の時間の 15 分前までにオペレーションのスケジュールを設定します。詳しくは、起動オペレーションのスケジュールをご覧ください。
    • STOP-OPERATION_SCHEDULE: 接続された VM インスタンスが停止する時間を示すスケジュール。cron 式の形式で表されます。特定の時間に VM インスタンスを停止する必要がある場合は、目的の時間の 15 分前までにオペレーションのスケジュールを設定します。詳細については、停止オペレーションのスケジュールをご覧ください。
  • TIME_ZONE: 省略可。このインスタンス スケジュールに対するロケーションベースの IANA タイムゾーン。省略した場合は、デフォルト値の UTC が使用されます。詳細については、タイムゾーンをご覧ください。
  • INITIATION_DATE: 省略可。インスタンス スケジュールが有効になる最初の日。RFC 3339 の形式で表されます。省略すると、スケジュールはすぐに有効になります。詳細については、開始日をご覧ください。
  • END_DATE: 省略可。インスタンス スケジュールが有効な最後の日。RFC 3339 タイムスタンプの形式で表されます。省略すると、スケジュールは無期限に有効になります。詳しくは、終了日をご覧ください。

API

Compute Engine API を使用してインスタンス スケジュールを作成するには、resourcePolicies.insert メソッドを使用してリクエストを行います。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies
{
  "name": "SCHEDULE_NAME",
  "description": "SCHEDULE_DESCRIPTION",
  "instanceSchedulePolicy": {
    "vmStartSchedule": {
      "schedule": "START-OPERATION_SCHEDULE"
    },
    "vmStopSchedule": {
      "schedule": "STOP-OPERATION_SCHEDULE"
    },
    "timeZone": "TIME_ZONE",
    "startTime":"INITIATION_DATE",
    "expirationTime":"END_DATE"
  }
}

次のように置き換えます。

  • PROJECT: 実際のプロジェクト ID
  • REGION: このインスタンス スケジュールに接続する VM インスタンスが配置されているリージョン。
  • SCHEDULE_NAME: 新しいインスタンス スケジュールの名前。
  • SCHEDULE_DESCRIPTION: 省略可。新しいインスタンス スケジュールの説明。
  • START-OPERATION_SCHEDULE または STOP-OPERATION_SCHEDULE: 少なくとも次のいずれかを指定します。
    • START-OPERATION_SCHEDULE: 接続された VM インスタンスが起動する時間を示すスケジュール。cron 式の形式で表されます。特定の時間に VM インスタンスを起動する必要がある場合は、目的の時間の 15 分前までにオペレーションのスケジュールを設定します。詳しくは、起動オペレーションのスケジュールをご覧ください。
    • STOP-OPERATION_SCHEDULE: 接続された VM インスタンスが停止する時間を示すスケジュール。cron 式の形式で表されます。特定の時間に VM インスタンスを停止する必要がある場合は、目的の時間の 15 分前までにオペレーションのスケジュールを設定します。詳細については、停止オペレーションのスケジュールをご覧ください。
  • TIME_ZONE: このインスタンス スケジュールに対するロケーションベースの IANA タイムゾーン。詳細については、タイムゾーンをご覧ください。
  • INITIATION_DATE: 省略可。インスタンス スケジュールが有効になる最初の日。RFC 3339 の形式で表されます。省略すると、スケジュールはすぐに有効になります。詳細については、開始日をご覧ください。
  • END_DATE: 省略可。インスタンス スケジュールが有効な最後の日。RFC 3339 タイムスタンプの形式で表されます。省略すると、スケジュールは無期限に有効になります。詳しくは、終了日をご覧ください。

各インスタンス スケジュールには次の設定があります。

起動オペレーションのスケジュールと、停止オペレーションのスケジュール

インスタンス スケジュールが、接続された VM インスタンスの起動と停止を行う時間を示すスケジュール。インスタンス スケジュールには、これらのスケジュールのいずれか、または両方を設定できます。

Google Cloud コンソールを使用してインスタンス スケジュールを作成する場合は、[開始時間]、[停止時間]、[頻度] を選択できます。または、各スケジュールを cron 式の形式で表します。gcloud CLI または Compute Engine API を使用してインスタンス スケジュールを作成する場合は、各スケジュールを cron 式の形式で表す必要があります。

次の表に、cron 式のフィールドと各フィールドでサポートされる値を示します。

時間 曜日
0~59 0-23 1-31

29~31 は、対象月にのみ有効

1~12 0~6 または SUN-SAT(日曜日~土曜日)

ここで、0=SUN、1=MON、… 6=SAT です。

これらの値に加えて、cron 式のすべてのフィールドで次の特殊文字を使用することもできます。
特殊文字 意味
* 任意 日付、月、曜日フィールドがすべて * に設定されている場合、スケジュールは毎日繰り返されます。
- 範囲 曜日フィールドが MON-FRI(または 1-5)に設定されている場合、スケジュールは毎週月曜日~金曜日で繰り返されます。
, リスト 月フィールドが 1-6,8-12 に設定されている場合、スケジュールは 7 月を除き毎月繰り返されます。

cron 式を記述する場合は、次の点を考慮してください。

  • 空白文字は、cron 式のフィールドを区切るために使用されます。特殊文字を使用するフィールドに余分なスペースを追加しないでください。
  • 曜日と日付の両方(フィールドが * に設定されていない場合)を指定した場合は、これらの値の共通部分ではなく、ユニオンが使用されます。たとえば、スケジュール 0 8 1 * MON は、毎週月曜日と毎月 1 日の午前 8 時に開始します。1 日が月曜日の場合にのみ午前 8 時に開始するわけではありません
タイムゾーン

起動オペレーション スケジュールと停止オペレーション スケジュールのロケーションベースの IANA タイムゾーン。IANA タイムゾーン データベースでは、使用可能な値のリストが定義されています。このタイムゾーンは、起動オペレーションと停止オペレーションのスケジュールの参考用としてのみ使用されます。開始日と終了日には使用されません。gcloud CLI または Compute Engine API を使用する場合、タイムゾーンは省略可能です。省略した場合、デフォルト値の UTC が使用されます。

一部の IANA タイムゾーンでは、夏時間(DST)が実施され、インスタンス スケジュールに影響を与える可能性があります。DST の詳細(開始時と終了時、スキップや繰り返しの時間など)は、各タイムゾーンによって異なります。

開始日と終了日

インスタンス スケジュールが有効になる期間です。どちらの値も任意です。これらの値を指定して、スケジュールを 1 年に制限しない限り、オペレーションは毎年繰り返されます。

Google Cloud コンソールを使用してインスタンスのスケジュールを作成する場合は、[開始日] フィールドと [終了日] フィールドを使用して日付、時刻、タイムゾーンを選択します。

gcloud CLI または Compute Engine API を使用してインスタンス スケジュールを作成する場合、これらの値は RFC 3339 タイムスタンプ形式として表されます。

  YYYY-MM-DDTHH:MM:SSOFFSET

次のように置き換えます。

  • YYYY-MM-DD: 4 桁の年、2 桁の月、月の 2 桁の日をハイフンで区切った日付。
  • HH:MM:SS: 24 時間における 2 桁の時間、2 桁の分、2 桁の秒をコロンで区切った時刻。
  • OFFSET: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、UTC より 8 時間早い太平洋標準時(PST)は -08:00 と表記されます。または、オフセットなし(UTC タイムゾーン)を使用する場合、Z で表記されます。

インスタンス スケジュールの一覧表示

インスタンスのスケジュールを一覧表示して、プロジェクトの既存のインスタンス スケジュールをすべて表示します。

コンソール

  1. Google Cloud コンソールの [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. ページ上部にある [インスタンス スケジュール] タブをクリックします。これにより、このプロジェクトのすべてのインスタンス スケジュールのリストが表示されます。

gcloud

gcloud CLI を使用して、インスタンス スケジュールを含むすべてのリソース ポリシーのリストを表示するには、gcloud compute resource-policies list コマンドを使用します。必要に応じて、結果を特定のリージョンに制限するには、--filter フラグを含めます。

gcloud compute resource-policies list \
    [--filter="region:(REGION)"]

次のように置き換えます。

  • REGION: 省略可。一覧表示するインスタンス スケジュールが配置されているリージョン。

API

Compute Engine API を使用して、特定のリージョンにおけるインスタンス スケジュールを含むすべてのリソース ポリシーのリストを表示するには、resourcePolicies.list メソッドを使用してリクエストを行います。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies

次のように置き換えます。

  • PROJECT: 実際のプロジェクト ID
  • REGION: 一覧表示するインスタンス スケジュールが配置されているリージョン。

インスタンス スケジュールの記述

インスタンス スケジュールを記述して、説明、タイミング、オペレーション、接続されているすべての VM インスタンスのリストを表示します。

コンソール

  1. Google Cloud コンソールの [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. ページ上部にある [インスタンス スケジュール] タブをクリックします。これにより、このプロジェクトのすべてのインスタンス スケジュールのリストが表示されます。

  3. 記述するインスタンス スケジュールの名前をクリックします。これにより、そのスケジュールの [インスタンス スケジュールの詳細] ページが開きます。

gcloud

gcloud CLI を使用してインスタンス スケジュールを記述するには、gcloud compute resource-policies describe コマンドを使用します。

gcloud compute resource-policies describe SCHEDULE_NAME \
    [--region=REGION]

次のように置き換えます。

  • SCHEDULE_NAME: 記述するインスタンス スケジュールの名前。
  • REGION: 省略可。インスタンス スケジュールが配置されているリージョン。

出力は次のようになります。

...
description: Every Monday to Friday in 2022, start VMs at 8 AM and stop VMs at 5 PM.
...
instanceSchedulePolicy:
 expirationTime: '2022-12-31T23:59:59Z'
 startTime: '2022-01-01T00:00:00Z'
 timeZone: UTC
 vmStartSchedule:
   schedule: 0 8 * * MON-FRI
 vmStopSchedule:
   schedule: 0 17 * * MON-FRI
...
name: example-instance-schedule
region: https://www.googleapis.com/compute/v1/projects/example-project/regions/us-west1
resourceStatus:
 instanceSchedulePolicy:
   nextRunStartTime: '2022-01-03T08:00:00Z'
...
status: READY

API

Compute Engine API を使用してインスタンス スケジュールを記述するには、resourcePolicies.get メソッドを使用してリクエストを行います。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME

次のように置き換えます。

  • PROJECT: 実際のプロジェクト ID
  • REGION: インスタンス スケジュールが配置されているリージョン。
  • SCHEDULE_NAME: 記述するインスタンス スケジュールの名前。

出力は次のようになります。

{
  ...
  "description": "Every Monday to Friday in 2022, start VMs at 8 AM and stop VMs at 5 PM.",
  "name": "example-instance-schedule",
  "instanceSchedulePolicy": {
    "vmStartSchedule": {
      "schedule": "0 8 * * MON-FRI"
    },
    "vmStopSchedule": {
      "schedule": "0 17 * * MON-FRI"
    },
    "timeZone": "UTC",
    "startTime": "2022-01-01T00:00:00Z",
    "expirationTime": "2022-12-31T23:59:59Z"
  },
  "status": "READY",
  "resourceStatus": {
    "instanceSchedulePolicy": {
      "nextRunStartTime": "2022-01-03T08:00:00Z"
    }
  },
  ...
}

インスタンス スケジュールを削除する

接続された VM インスタンスとリソース ポリシーを削除することで、不要になったインスタンス スケジュールを削除します。

コンソール

  1. Google Cloud コンソールの [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. ページ上部にある [インスタンス スケジュール] タブをクリックします。これにより、このプロジェクトのすべてのインスタンス スケジュールのリストが表示されます。

  3. 削除するインスタンス スケジュールのチェックボックスをオンにします。

  4. ページの上部にある [削除] をクリックします。これにより、この操作を確認する新しいダイアログが開きます。

  5. ダイアログで [削除] をクリックします。

gcloud

  1. このインスタンス スケジュールが VM インスタンスに接続されている場合は、それらを削除します。
    1. このスケジュールが接続されている VM インスタンスを確認するには、インスタンス スケジュールを記述します
    2. このスケジュールが接続されている VM インスタンスごとに、インスタンス スケジュールを削除します
  2. gcloud CLI を使用してインスタンス スケジュールを削除するには、gcloud compute resource-policies delete コマンドを使用します。

    gcloud compute resource-policies delete SCHEDULE_NAME \
       [--region=REGION]
    

    次のように置き換えます。

    • SCHEDULE_NAME: 削除するインスタンス スケジュールの名前。
    • REGION: 省略可。インスタンス スケジュールが配置されているリージョン。

API

  1. このインスタンス スケジュールが VM インスタンスに接続されている場合は、それらを削除します。
    1. このスケジュールが接続されている VM インスタンスを確認するには、インスタンス スケジュールを記述します
    2. このスケジュールが接続されている VM インスタンスごとに、インスタンス スケジュールを削除します
  2. Compute Engine API を使用してインスタンス スケジュールを削除するには、resourcePolicies.delete メソッドを使用してリクエストを行います。

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME
    

    次のように置き換えます。

    • PROJECT: 実際のプロジェクト ID
    • REGION: インスタンス スケジュールが配置されているリージョン。
    • SCHEDULE_NAME: 削除するインスタンス スケジュールの名前。

VM インスタンスでインスタンス スケジュールを使用する

インスタンス スケジュールを使用するには、そのスケジュールを実行する 1 つ以上の VM インスタンスに接続します。インスタンス スケジュールは、既存の VM インスタンスまたは新しい VM インスタンスの作成時に接続できます。VM インスタンスによる接続されたインスタンス スケジュールの実行を停止するには、その VM インスタンスからスケジュールを削除します。

新しい VM インスタンスの作成時にインスタンス スケジュールを接続する

インスタンス スケジュールを新しい VM インスタンスに接続するには、使用するインスタンス スケジュールと同じリージョンに VM インスタンスを作成する必要があります。詳細については、VM インスタンスの作成をご覧ください。

コンソール

Google Cloud コンソールを使用してインスタンスを作成している間、インスタンス スケジュールを接続することはできません。Google Cloud コンソールを使用してインスタンス スケジュールを新しい VM インスタンスに接続するには、VM インスタンスを作成してから、VM インスタンスにスケジュールを接続します。

gcloud

gcloud CLI を使用して VM インスタンスにインスタンス スケジュールを接続するには、--resource-policies フラグを指定して gcloud compute instances create コマンドを使用します。たとえば、公開イメージからインスタンス スケジュールが接続された VM インスタンスを作成するには、次のコマンドを使用します。

gcloud compute instances create VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE] \
    [--image IMAGE | --image-family IMAGE_FAMILY] \
    [--image-project IMAGE_PROJECT]

次のように置き換えます。

  • VM_NAME: インスタンス スケジュールを接続する VM インスタンスの名前。
  • SCHEDULE_NAME: 接続するインスタンス スケジュールの名前。
  • ZONE: 省略可。VM インスタンスが配置されているゾーン。
  • 省略可: 公開イメージから VM インスタンスを作成します。
    • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。
    • IMAGE: 公開イメージの必須バージョン。例: --image debian-10-buster-v20200309
    • IMAGE_FAMILY: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、--image-family debian-10 を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。
    • IMAGE_PROJECT: イメージを含むプロジェクト

API

Compute Engine API を使用して VM インスタンスにインスタンス スケジュールを接続するには、instances.insert メソッドを使用してリクエストを行い、resourcePolicies 属性を指定します。たとえば、公開イメージからインスタンス スケジュールが接続された VM インスタンスを作成するには、次のリクエストを行います。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "resourcePolicies": [
    "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
  ]
}

次のように置き換えます。

  • PROJECT_ID: VM を作成するプロジェクトの ID。
  • ZONE: VM を作成するゾーン。
  • MACHINE_TYPE_ZONE: 新しい VM に使用するマシンタイプを含むゾーン。
  • MACHINE_TYPE: 新しい VM のマシンタイプ(事前定義またはカスタム)。
  • VM_NAME: 新しい VM の名前
  • 省略可: 公開イメージから VM インスタンスを作成します。
    • IMAGE_PROJECT: イメージを含むプロジェクト。たとえば、イメージ ファミリーとして debian-10 を指定する場合は、イメージ プロジェクトとして debian-cloud を指定します。
    • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。
    • IMAGE: 公開イメージの必須バージョン。例: "sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
    • IMAGE_FAMILY: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、"sourceImage": "projects/debian-cloud/global/images/family/debian-10" を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。
  • REGION: インスタンス スケジュールが配置されているリージョン。
  • SCHEDULE_NAME: 接続するインスタンス スケジュールの名前。

インスタンス スケジュールのリソース ポリシーと、接続されている VM インスタンスの監査ログを調べると、インスタンス スケジュールが正常に実行されているかどうかを確認できます。各オペレーションにスケジュールされた時刻から最大 15 分待つことが必要な場合があります。

インスタンス スケジュールを既存の VM インスタンスに接続する

インスタンス スケジュールは、インスタンス スケジュールと同じリージョンにある既存の VM インスタンスに接続できます。

コンソール

  1. Google Cloud コンソールの [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. ページ上部にある [インスタンス スケジュール] タブをクリックします。これにより、このプロジェクトのすべてのインスタンス スケジュールのリストが表示されます。

  3. 接続するインスタンス スケジュールの名前をクリックします。[インスタンス スケジュールの詳細] ページが開きます。

  4. [スケジュールにインスタンスを追加] をクリックします。[スケジュールにインスタンスを追加] ペインが開きます。

  5. このスケジュールを接続する各 VM インスタンスのチェックボックスを選択します。

  6. [追加] をクリックします。

gcloud

gcloud CLI を使用して VM インスタンスにインスタンス スケジュールを接続するには、gcloud compute instances add-resource-policies コマンドを使用します。

gcloud compute instances add-resource-policies VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE]

次のように置き換えます。

  • VM_NAME: インスタンス スケジュールを接続する VM インスタンスの名前。
  • SCHEDULE_NAME: 接続するインスタンス スケジュールの名前。
  • ZONE: 省略可。VM インスタンスが配置されているゾーン。

API

Compute Engine API を使用して VM インスタンスにインスタンス スケジュールを接続するには、instances.addResourcePolicies メソッドを使用してリクエストを行います。

POST https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME/addResourcePolicies
{
  "resourcePolicies": "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
}

次のように置き換えます。

  • PROJECT: 実際のプロジェクト ID
  • ZONE: VM インスタンスが配置されているゾーン。
  • VM_NAME: インスタンス スケジュールを接続する VM インスタンスの名前。
  • REGION: インスタンス スケジュールが配置されているリージョン。
  • SCHEDULE_NAME: 接続するインスタンス スケジュールの名前。

インスタンス スケジュールのリソース ポリシーと、接続されている VM インスタンスの監査ログを調べると、インスタンス スケジュールが正常に実行されているかどうかを確認できます。各オペレーションにスケジュールされた時刻から最大 15 分待つことが必要な場合があります。

VM インスタンスからインスタンス スケジュールを削除する

VM インスタンスによるインスタンス スケジュールの実行を停止するには、その VM インスタンスからインスタンス スケジュールを削除します。

コンソール

  1. Google Cloud コンソールの [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. ページ上部にある [インスタンス スケジュール] タブをクリックします。このプロジェクトのすべてのインスタンス スケジュールが一覧表示されます。

  3. 削除するインスタンス スケジュールの名前をクリックします。[インスタンス スケジュールの詳細] ページが開きます。

  4. [接続されているインスタンス] セクションで、このスケジュールから削除する各 VM インスタンスのチェックボックスをオンにします。

  5. [ スケジュールからインスタンスを削除] をクリックします。これにより、この操作を確認する新しいダイアログが開きます。

  6. ダイアログで [削除] をクリックします。

gcloud

gcloud CLI を使用して VM インスタンスからインスタンス スケジュールを削除するには、gcloud compute instances remove-resource-policies コマンドを使用します。

gcloud compute instances remove-resource-policies VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE]

次のように置き換えます。

  • VM_NAME: インスタンス スケジュールを削除する VM インスタンスの名前。
  • SCHEDULE_NAME: 削除するインスタンス スケジュールの名前。
  • ZONE: 省略可。VM インスタンスが配置されているゾーン。

API

Compute Engine API を使用して VM インスタンスからインスタンス スケジュールを削除するには、instances.removeResourcePolicies メソッドを使用してリクエストを行います。

POST https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME/removeResourcePolicies
{
  "resourcePolicies": "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
}

次のように置き換えます。

  • PROJECT: 実際のプロジェクト ID
  • ZONE: VM インスタンスが配置されているゾーン。
  • VM_NAME: インスタンス スケジュールを削除する VM インスタンスの名前。
  • REGION: インスタンス スケジュールが配置されているリージョン。
  • SCHEDULE_NAME: 削除するインスタンス スケジュールの名前。

次のステップ