予約を変更する


このドキュメントでは、既存の予約を変更する方法について説明します。

コミットメントに関連付けられている予約を変更する場合は、代わりにコミットメントに関連付けられている予約を置き換えるをご覧ください。

始める前に

  • 予約に関する要件制限事項を確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

必要なロール

予約の変更に必要な権限を取得するには、プロジェクトに対する Compute 管理者roles/compute.admin)IAM ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。

この事前定義ロールには、予約の変更に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

予約を変更するには、次の権限が必要です。

  • 予約の自動削除オプションまたは共有予約内のコンシューマ プロジェクトを変更する場合: プロジェクトに対する compute.reservations.update
  • 予約内の VM の数を変更する場合: プロジェクトに対する compute.reservations.resize

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

予約を変更する

既存の予約に対して、次の変更を行うことができます。

  • 予約の自動削除を変更する

    このセクションでは、予約の自動削除オプションを有効にする方法、予約が自動的に削除される日時を変更する方法、予約の自動削除を無効にする方法について説明します。

  • 共有予約内のコンシューマ プロジェクトを変更する

    このセクションでは、共有予約を使用できるコンシューマ プロジェクトを追加または削除する方法について説明します。共有予約を使用できるプロジェクトを追加する場合、追加するプロジェクトは、予約が作成されたプロジェクト(オーナー プロジェクト)と同じ組織に存在する必要があります。

  • 予約内の予約済み VM の数を変更する

    このセクションでは、予約内の予約済み仮想マシン(VM)インスタンスの数を増減する方法について説明します。

コミットメントに関連付けられていない、予約内の他のプロパティを変更する場合は、このドキュメントの予約内の他のプロパティを変更するをご覧ください。

予約の自動削除を変更する

Compute Engine が既存の予約を自動的に削除するタイミングを変更するには、次のいずれかを行います。

  • 自動削除オプションを有効にするか、予約が自動的に削除される日時を変更します。

  • 自動削除オプションを無効にします。

予約の自動削除を変更するには、Google Cloud コンソール、gcloud CLI、REST のいずれかを使用します。

コンソール

予約の自動削除を変更するには、次の操作を行います。

  1. Google Cloud コンソールの [予約] ページに移動します。

    [予約] に移動

  2. [名前] 列で、変更する予約の名前をクリックします。

    選択した予約の詳細ページが開きます。

  3. [自動削除日時] 行で、[ 自動削除日時を編集] をクリックします。

  4. [予約の更新] ペインで、次のいずれかを行います。

    • 特定の日時に予約を削除するには、次のようにします。

      1. 自動削除オプションが有効になっていない場合は、[自動削除を有効にする] 切り替えをクリックしてオンにします。

      2. [自動削除日時] フィールドに、Compute Engine が予約を自動的に削除する日時を入力します。

    • 自動削除しない場合は、[自動削除を有効にする] の切り替えをクリックしてオフにします。

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

    予約の変更には数秒かかることがあります。

gcloud

予約の自動削除オプションを有効にすると、予約を削除する日時を指定するほか、特定の期間の経過後に予約を削除するよう指定できます。

自動削除オプションを有効にする、または予約を削除するタイミングを変更するには、次のいずれかを行います。

  • 特定の日時に予約を削除するには、--delete-at-time フラグを指定して gcloud beta compute reservations update コマンドを使用します。

    gcloud beta compute reservations update RESERVATION_NAME \
        --delete-at-time=DELETE_AT_TIME \
        --project=PROJECT_ID \
        --zone=ZONE
    

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

    • RESERVATION_NAME: 既存の予約の名前。

    • DELETE_AT_TIME: RFC 3339 タイムスタンプ形式の日時。次のようにする必要があります。

      YYYY-MM-DDTHH:MM:SSOFFSET
      

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

      • YYYY-MM-DD: 4 桁の年、2 桁の月、その月の 2 桁の日をハイフン(-)で区切った日付。

      • HH:MM:SS: 24 時間制の 2 桁の時間、2 桁の分、2 桁の秒をコロン(:)で区切った時刻。

      • OFFSET: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、太平洋標準時(PST)を使用する場合は -08:00 を指定します。オフセットを使用しない場合は、Z を指定します。

    • PROJECT_ID: 予約が配置されているプロジェクトの ID。

    • ZONE: 予約が配置されているゾーン。

  • 特定の期間の経過後に予約を削除するには、--delete-after-duration フラグを指定して gcloud beta compute reservations update コマンドを使用します。

    gcloud beta compute reservations update RESERVATION_NAME \
        --delete-after-duration=DELETE_AFTER_DURATION \
        --project=PROJECT_ID \
        --zone=ZONE
    

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

    • RESERVATION_NAME: 既存の予約の名前。

    • DELETE_AFTER_DURATION: 予約が自動的に削除されるまでの期間(日、時、分、秒)。たとえば、30 分の場合は 30m と指定し、1 日 2 時間 3 分 4 秒の場合は 1d2h3m4s と指定します。

    • PROJECT_ID: 予約が配置されているプロジェクトの ID。

    • ZONE: 予約が配置されているゾーン。

自動削除オプションを無効にするには、--disable-auto-delete フラグを指定して gcloud beta compute reservations update コマンドを使用します。

gcloud beta compute reservations update RESERVATION_NAME \
    --disable-auto-delete \
    --project=PROJECT_ID \
    --zone=ZONE

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

  • RESERVATION_NAME: 既存の予約の名前。

  • PROJECT_ID: 予約が配置されているプロジェクトの ID。

  • ZONE: 予約が配置されているゾーン。

REST

予約の自動削除オプションを有効にすると、予約を削除する日時を指定するほか、特定の期間の経過後に予約を削除するよう指定できます。

自動削除オプションを有効にする、または予約を削除するタイミングを変更するには、次のいずれかを行います。

  • 特定の日時に予約を削除するには、paths クエリ パラメータを deleteAtTime に設定して PATCH リクエストを beta.reservations.update メソッドに送信します。

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=deleteAtTime
    
    {
      "name": "RESERVATION_NAME",
      "deleteAtTime": "DELETE_AT_TIME"
    }
    

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

    • PROJECT_ID: 予約が配置されているプロジェクトの ID。

    • ZONE: 予約が配置されているゾーン。

    • RESERVATION_NAME: 既存の予約の名前。

    • DELETE_AT_TIME: RFC 3339 タイムスタンプ形式の日時。次のようにする必要があります。

      YYYY-MM-DDTHH:MM:SSOFFSET
      

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

      • YYYY-MM-DD: 4 桁の年、2 桁の月、その月の 2 桁の日をハイフン(-)で区切った日付。

      • HH:MM:SS: 24 時間制の 2 桁の時間、2 桁の分、2 桁の秒をコロン(:)で区切った時刻。

      • OFFSET: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、太平洋標準時(PST)を使用する場合は -08:00 を指定します。オフセットを使用しない場合は、Z を指定します。

  • 特定の期間の経過後に予約を削除するには、paths クエリ パラメータを deleteAfterDuration に設定して PATCH リクエストを beta.reservations.update メソッドに送信します。

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=deleteAfterDuration
    
    {
      "name": "RESERVATION_NAME",
      "deleteAfterDuration": {
        "seconds": "DELETE_AFTER_DURATION"
      }
    }
    

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

    • PROJECT_ID: 予約が配置されているプロジェクトの ID。

    • ZONE: 予約が配置されているゾーン。

    • RESERVATION_NAME: 既存の予約の名前。

    • DELETE_AFTER_DURATION: 予約が自動的に削除されるまでの期間(秒)。たとえば、86,400 秒(1 日)の場合は 86400 を指定します。

自動削除オプションを無効にするには、PATCH リクエストを beta.reservations.update メソッドに送信します。リクエストでは paths=deleteAtTime&paths=deleteAfterDuration クエリ パラメータを指定し、リクエスト本文を省略します。

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=deleteAtTime&paths=deleteAfterDuration

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

  • PROJECT_ID: 予約が配置されているプロジェクトの ID。

  • ZONE: 予約が配置されているゾーン。

  • RESERVATION_NAME: 既存の予約の名前。

共有予約内のコンシューマ プロジェクトを変更する

既存の共有予約のコンシューマ プロジェクトを変更できます。コンシューマ プロジェクトは、共有予約が共有されており、その予約を使用できるプロジェクトです。

共有予約を使用できるコンシューマ プロジェクトを変更すると、予約の使用量が変わる可能性があります。たとえば、削除されたコンシューマ プロジェクトは、予約からリソースを消費しなくなります。また、予約のプロパティと一致する VM が予約を自動的に使用するように構成されていた場合(デフォルトの動作)、コンシューマ プロジェクトが追加されると、予約からリソースを使用し始める可能性があります。予約の使用量をモニタリングする場合は、予約の使用量を確認する方法をご覧ください。

共有予約を使用できるコンシューマ プロジェクトを変更するには、Google Cloud コンソール、gcloud CLI、REST のいずれかを使用します。

コンソール

共有予約のコンシューマ プロジェクトを変更する手順は次のとおりです。

  1. Google Cloud コンソールの [予約] ページに移動します。

    [予約] に移動

  2. [名前] 列で、記述する予約の名前をクリックします。

    予約の詳細ページが表示されます。

  3. [ 編集] をクリックします。

  4. [選択したプロジェクト] セクションで、次のいずれかの操作を行います。

    • 特定のコンシューマー プロジェクトとの予約の共有を停止するには、[ 削除] をクリックします。

    • 1 つ以上の特定のプロジェクトと予約の共有を開始するには、次の操作を行います。

      1. [ プロジェクトを追加] をクリックします。

      2. 予約を共有するオーナー プロジェクトの組織の各プロジェクトのチェックボックスをオンにします。

      3. [選択] をクリックします。

  5. 変更を確定するには、[保存] をクリックします。

    予約の変更には数秒かかることがあります。

gcloud

共有予約を使用するコンシューマ プロジェクトを変更する場合は、共有予約の使用を許可するプロジェクとの ID、許可を停止するプロジェクトの ID のカンマ区切りのリストを指定する必要があります。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。リスト内でオーナー プロジェクトを指定しないでください。デフォルトでは、共有予約の使用があらかじめ許可されています。

共有予約を使用するコンシューマ プロジェクトを変更するには、次のいずれかの方法を選択します。

  • 1 つ以上のプロジェクトによる共有予約の使用を許可するには、--add-share-with フラグを指定して gcloud compute reservations update コマンドを使用します。

    gcloud compute reservations update RESERVATION_NAME \
        --project=PROJECT_ID \
        --add-share-with=CONSUMER_PROJECT_IDS \
        --zone=ZONE
    

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

    • RESERVATION_NAME: 既存の共有予約の名前。

    • PROJECT_ID: オーナー プロジェクト(共有予約の作成に使用されているプロジェクト)の ID。

    • CONSUMER_PROJECT_IDS: 予約を共有するプロジェクトの ID のカンマ区切りリスト。たとえば、project-1,project-2 を指定します。

    • ZONE: 共有予約が配置されているゾーン。

  • 1 つ以上のプロジェクトによる共有予約の使用の許可を停止するには、--remove-share-with フラグを指定して gcloud compute reservations update コマンドを使用します。

    gcloud compute reservations update RESERVATION_NAME \
        --project=PROJECT_ID \
        --remove-share-with=CONSUMER_PROJECT_IDS \
        --zone=ZONE
    

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

    • RESERVATION_NAME: 既存の共有予約の名前。

    • PROJECT_ID: オーナー プロジェクト(共有予約の作成に使用されているプロジェクト)の ID。

    • CONSUMER_PROJECT_IDS: 予約の共有を停止するプロジェクトの ID のカンマ区切りリスト。たとえば、project-1,project-2 を指定します。

    • ZONE: 共有予約が配置されているゾーン。

  • 共有予約を使用できるプロジェクトのリストを置き換えるには、--share-with フラグを指定して gcloud compute reservations update コマンドを使用します。

    gcloud compute reservations update RESERVATION_NAME \
        --project=PROJECT_ID \
        --share-with=CONSUMER_PROJECT_IDS \
        --zone=ZONE
    

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

    • RESERVATION_NAME: 既存の共有予約の名前。

    • PROJECT_ID: オーナー プロジェクト(共有予約の作成に使用されているプロジェクト)の ID。

    • ZONE: 共有予約が配置されているゾーン。

    • CONSUMER_PROJECT_IDS: 予約を共有するプロジェクトの ID のカンマ区切りリスト。たとえば、project-1,project-2 を指定します。

REST

共有予約を使用するコンシューマ プロジェクトを変更する場合は、共有予約の使用を許可するプロジェクトの ID または許可を停止するプロジェクトの ID を指定する必要があります。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。オーナー プロジェクトを指定しないでください。デフォルトでは、共有予約の使用があらかじめ許可されています。

共有予約を使用するコンシューマ プロジェクトを変更するには、次のいずれかの方法を選択します。

  • 1 つ以上のプロジェクトによる共有予約の使用を許可するには、reservations.update メソッドPATCH リクエストを送信します。リクエスト URL に、予約を共有する各プロジェクトの paths=shareSettings.projectMap.PROJECT_ID クエリ パラメータを含めます。

    たとえば、2 つのプロジェクトの共有予約の使用を許可するには、次の PATCH リクエストを行います。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=shareSettings.projectMap.CONSUMER_PROJECT_ID_1&paths=shareSettings.projectMap.CONSUMER_PROJECT_ID_2
    
    {
      "name": "RESERVATION_NAME",
      "shareSetting": {
        "projectMap": {
          "CONSUMER_PROJECT_ID_1": {
            "projectId": "CONSUMER_PROJECT_ID_1"
          },
          "CONSUMER_PROJECT_ID_2": {
            "projectId": "CONSUMER_PROJECT_ID_2"
          }
        }
      }
    }
    

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

    • PROJECT_ID: オーナー プロジェクト(共有予約の作成に使用されているプロジェクト)の ID。

    • ZONE: 共有予約が配置されているゾーン。

    • RESERVATION_NAME: 既存の共有予約の名前。

    • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2: 予約を共有する 2 つのプロジェクトの ID。

  • 1 つ以上のプロジェクトによる共有予約の使用の許可を停止するには、reservations.update メソッドPATCH リクエストを送信します。リクエスト URL に、予約の共有を停止する各プロジェクトの paths=shareSettings.projectMap.PROJECT_ID クエリ パラメータを含めます。また、リクエスト本文から shareSetting フィールドを削除する必要があります。

    たとえば、2 つのプロジェクトによる共有予約の使用の許可を停止するには、次の PATCH リクエストを行います。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=shareSettings.projectMap.CONSUMER_PROJECT_ID_1&paths=shareSettings.projectMap.CONSUMER_PROJECT_ID_2
    
    {
      "name": "RESERVATION_NAME"
    }
    

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

    • PROJECT_ID: オーナー プロジェクト(共有予約の作成に使用されているプロジェクト)の ID。

    • ZONE: 共有予約が配置されているゾーン。

    • RESERVATION_NAME: 既存の共有予約の名前。

    • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2: 予約の共有を停止する 2 つのプロジェクトの ID。

予約内の予約済み VM の数を変更する

既存の予約を変更して、予約済み VM の数を増減できます。

予約内の予約済み VM の数を変更する前に、次の点を確認してください。

  • 予約内の予約済み VM の数を増やす場合は、次の制限が適用されます。

    • 予約が配置されているゾーンに十分なリソースが必要です。

    • 予約する追加リソースに対する十分な割り当てが必要です。

  • 予約の消費タイプが特定のもので、予約内の予約済み VM の数を減らす場合は、予約を使用する VM の数が目的の予約のサイズを超えないようにします。これは次の方法で行うことができます。

    これを行わないと、エラーが発生します。

予約内の予約済み VM の数を変更するには、Google Cloud コンソール、gcloud CLI、REST のいずれかを使用します。

コンソール

予約内の予約済み VM の数を変更する手順は次のとおりです。

  1. Google Cloud コンソールの [予約] ページに移動します。

    [予約] に移動

  2. [名前] 列で、変更する予約の名前をクリックします。

    予約の詳細ページが表示されます。

  3. [ 編集] をクリックします。

  4. [VM インスタンスの数] フィールドに、予約する VM の更新した数を入力します。

  5. [保存] をクリックして確定します。

    予約の変更には数秒かかることがあります。

gcloud

予約内の予約済み VM の数を変更するには、gcloud compute reservations update コマンドを使用します。

gcloud compute reservations update RESERVATION_NAME \
    --project=PROJECT_ID \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

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

  • RESERVATION_NAME: 既存の予約の名前。

  • PROJECT_ID: 予約が配置されているプロジェクトの ID。

  • NUMBER_OF_VMS: 予約する VM の新しい数。

  • ZONE: 予約が配置されているゾーン。

REST

予約内の予約済み VM の数を変更するには、reservations.resize メソッドPOST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/resize

{
  "specificSkuCount": "NUMBER_OF_VMS"
}

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

  • PROJECT_ID: 予約が配置されているプロジェクトの ID。

  • ZONE: 予約が配置されているゾーン。

  • RESERVATION_NAME: 既存の予約の名前。

  • NUMBER_OF_VMS: 予約する VM の新しい数。

予約内の他のプロパティを変更する

既存の予約内の他のプロパティを変更するには、次の操作を行います。

  1. 更新したプロパティを使用して新しい単一プロジェクトまたは共有予約を作成します。

  2. 既存の予約を削除します。

トラブルシューティング

予約の更新に関する問題のトラブルシューティング方法をご覧ください。

次のステップ