このドキュメントでは、既存の予約を変更する方法について説明します。
予約の変更が役立つ状況としては、容量のニーズが変化した場合や、プロジェクトで共有予約を許可または停止する場合などがあります。共有予約を変更する場合は、オーナー プロジェクトを使用する必要があります。
コミットメントに関連付けられている予約を変更する場合は、コミットメントに関連付けられている予約を置き換えるをご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
必要なロール
予約の変更に必要な権限を取得するには、プロジェクトに対する Compute 管理者(roles/compute.admin
)IAM ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。
この事前定義ロールには、予約の変更に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
予約を変更するには、次の権限が必要です。
-
予約の自動削除オプションまたは共有予約内のコンシューマ プロジェクトを変更する場合: プロジェクトに対する
compute.reservations.update
-
予約内の VM の数を変更する場合: プロジェクトに対する
compute.reservations.resize
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
予約を変更する
既存の予約を直接変更するには、次のいずれかを行います。
-
予約の自動削除オプションを有効にしたり、Compute Engine が予約を自動的に削除する日時を変更できます。また、予約の自動削除を無効にすることもできます。
-
共有予約を使用できるコンシューマー プロジェクトを追加または削除できます。
-
予約内の予約済み仮想マシン(VM)インスタンスの数を増減できます。
このリストに記載されていないプロパティを変更する場合は、このドキュメントの予約の他のプロパティを変更するをご覧ください。
予約の自動削除を変更する
Compute Engine が既存の予約を自動的に削除するタイミングを変更するには、次のいずれかを行います。
自動削除オプションを有効にするか、予約が自動的に削除される日時を変更します。
自動削除オプションを無効にします。
予約の自動削除を変更するには、次のいずれかを選択します。
コンソール
Google Cloud コンソールの [予約] ページに移動します。
[オンデマンド予約] タブ(デフォルト)の [名前] 列で、変更する予約の名前をクリックします。
予約の詳細ページが開きます。
[自動削除日時] 行で、[
自動削除日時を編集] をクリックします。[予約の更新] ペインで、次のいずれかを行います。
特定の日時に予約を削除するには、次のようにします。
自動削除オプションが有効になっていない場合は、[自動削除を有効にする] 切り替えをクリックしてオンにします。
[自動削除日時] フィールドに、Compute Engine が予約を自動的に削除する日時を入力します。
自動削除しない場合は、[自動削除を有効にする] の切り替えをクリックしてオフにします。
[送信] をクリックします。
予約の変更には数秒かかることがあります。
gcloud
予約の自動削除オプションを有効にすると、予約を削除する日時を指定するほか、特定の期間の経過後に予約を削除するよう指定できます。
自動削除オプションを有効にする、または予約を削除するタイミングを変更するには、次のいずれかを行います。
特定の日時に予約を削除するには、
--delete-at-time
フラグを指定してgcloud beta compute reservations update
コマンドを使用します。gcloud beta compute reservations update RESERVATION_NAME \ --delete-at-time=DELETE_AT_TIME \ --zone=ZONE
次のように置き換えます。
RESERVATION_NAME
: 既存の予約の名前。DELETE_AT_TIME
: RFC 3339 タイムスタンプ形式の日時。ZONE
: 予約が配置されているゾーン。
特定の期間の経過後に予約を削除するには、
--delete-after-duration
フラグを指定してgcloud beta compute reservations update
コマンドを使用します。gcloud beta compute reservations update RESERVATION_NAME \ --delete-after-duration=DELETE_AFTER_DURATION \ --zone=ZONE
次のように置き換えます。
RESERVATION_NAME
: 既存の予約の名前。DELETE_AFTER_DURATION
: 予約が自動的に削除されるまでの期間(日、時、分、秒)。たとえば、30 分の場合は30m
と指定し、1 日 2 時間 3 分 4 秒の場合は1d2h3m4s
と指定します。ZONE
: 予約が配置されているゾーン。
自動削除オプションを無効にするには、--disable-auto-delete
フラグを指定して gcloud beta compute reservations update
コマンドを使用します。
gcloud beta compute reservations update RESERVATION_NAME \
--disable-auto-delete \
--zone=ZONE
次のように置き換えます。
RESERVATION_NAME
: 既存の予約の名前。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 タイムスタンプ形式の日時。
特定の期間の経過後に予約を削除するには、
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
: 既存の予約の名前。
共有予約内のコンシューマー プロジェクトを変更する
共有予約の使用を許可できるのは、オーナー プロジェクトと同じ組織内のプロジェクトのみです。プロジェクトをオーナー プロジェクトの組織に移行する方法については、Resource Manager ドキュメントの組織リソース間でプロジェクトを移行するをご覧ください。
共有予約を使用できるコンシューマー プロジェクトを変更すると、予約の使用量が変わる可能性があります。たとえば、削除されたコンシューマ プロジェクトは、予約からリソースを消費しなくなります。また、予約のプロパティと一致する VM が予約を自動的に使用するように構成されていた場合(デフォルトの動作)、コンシューマ プロジェクトが追加されると、予約からリソースを使用し始める可能性があります。予約の使用量をモニタリングする場合は、予約の使用量を確認する方法をご覧ください。
共有予約を使用できるコンシューマー プロジェクトを変更するには、次のいずれかを選択します。
コンソール
Google Cloud コンソールの [予約] ページに移動します。
[オンデマンド予約] タブ(デフォルト)の [名前] 列で、記述する予約の名前をクリックします。
予約の詳細ページが表示されます。
[
編集] をクリックします。[選択したプロジェクト] セクションで、次のいずれかの操作を行います。
特定のコンシューマー プロジェクトとの予約の共有を停止するには、[
削除] をクリックします。1 つ以上の特定のプロジェクトと予約の共有を開始するには、次の操作を行います。
[
プロジェクトを追加] をクリックします。予約を共有するオーナー プロジェクトの組織の各プロジェクトのチェックボックスをオンにします。
[選択] をクリックします。
変更を確定するには、[保存] をクリックします。
予約の変更には数秒かかることがあります。
gcloud
共有予約を使用するコンシューマ プロジェクトを変更する場合は、共有予約の使用を許可するプロジェクとの ID、許可を停止するプロジェクトの ID のカンマ区切りのリストを指定する必要があります。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。リスト内でオーナー プロジェクトを指定しないでください。デフォルトでは、共有予約の使用があらかじめ許可されています。
共有予約を使用するコンシューマ プロジェクトを変更するには、次のいずれかの方法を選択します。
1 つ以上のプロジェクトによる共有予約の使用を許可するには、
--add-share-with
フラグを指定してgcloud compute reservations update
コマンドを使用します。gcloud compute reservations update RESERVATION_NAME \ --add-share-with=CONSUMER_PROJECT_IDS \ --zone=ZONE
次のように置き換えます。
RESERVATION_NAME
: 既存の共有予約の名前。CONSUMER_PROJECT_IDS
: 予約を共有するプロジェクトの ID のカンマ区切りリスト。たとえば、project-1,project-2
を指定します。ZONE
: 共有予約が配置されているゾーン。
1 つ以上のプロジェクトによる共有予約の使用の許可を停止するには、
--remove-share-with
フラグを指定してgcloud compute reservations update
コマンドを使用します。gcloud compute reservations update RESERVATION_NAME \ --remove-share-with=CONSUMER_PROJECT_IDS \ --zone=ZONE
次のように置き換えます。
RESERVATION_NAME
: 既存の共有予約の名前。CONSUMER_PROJECT_IDS
: 予約の共有を停止するプロジェクトの ID のカンマ区切りリスト。たとえば、project-1,project-2
を指定します。ZONE
: 共有予約が配置されているゾーン。
共有予約を使用できるプロジェクトのリストを置き換えるには、
--share-with
フラグを指定してgcloud beta compute reservations update
コマンドを使用します。gcloud beta compute reservations update RESERVATION_NAME \ --share-with=CONSUMER_PROJECT_IDS \ --zone=ZONE
次のように置き換えます。
RESERVATION_NAME
: 既存の共有予約の名前。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_1
とCONSUMER_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_1
とCONSUMER_PROJECT_ID_2
: 予約の共有を停止する 2 つのプロジェクトの ID。
予約内の予約済み VM の数を変更する
既存の予約を変更して、予約済み VM の数を増減できます。
予約の予約済み VM の数を変更する前に、次の条件を満たしていることを確認してください。
予約の予約済み VM の数を増やす場合は、次の点に注意してください。
予約が配置されているゾーンに十分なリソースが必要です。
予約する追加リソースに対して十分な割り当て(CPU と GPU の割り当て)が必要です。割り当てを増やすには、Cloud Quotas のドキュメントで割り当ての表示と管理をご覧ください。
予約の消費タイプが特定のもので、予約の予約済み VM の数を減らす場合は、予約を使用する VM の数が目的の予約のサイズを超えないようにします。これは次の方法で行うことができます。
予約の予約済み VM の数を変更するには、次のいずれかのオプションを選択します。
コンソール
Google Cloud コンソールの [予約] ページに移動します。
[オンデマンド予約] タブ(デフォルト)の [名前] 列で、変更する予約の名前をクリックします。
予約の詳細ページが表示されます。
[
編集] をクリックします。[VM インスタンスの数] フィールドに、予約する VM の更新した数を入力します。
[保存] をクリックして確定します。
予約の変更には数秒かかることがあります。
gcloud
予約内の予約済み VM の数を変更するには、gcloud compute reservations update
コマンドを使用します。
gcloud compute reservations update RESERVATION_NAME \
--vm-count=NUMBER_OF_VMS \
--zone=ZONE
次のように置き換えます。
RESERVATION_NAME
: 既存の予約の名前。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 の新しい数。
予約の他のプロパティを変更する
予約の変更で説明されていないプロパティを変更する場合は、代替の予約を作成する必要があります。
予約容量が意図せず減少するリスクを回避して予約を置き換えるには、次の操作を行います。
トラブルシューティング
予約の更新に関する問題のトラブルシューティング方法をご覧ください。