このドキュメントでは、Compute Engine インスタンスが予約を使用しないようにする方法について説明します。予約の詳細については、Compute Engine ゾーンリソースの予約をご覧ください。
自動的に使用される予約を使用すると、予約に一致するプロパティを持つインスタンスが予約を自動的に使用できます。インスタンスが予約を使用しないようにするには、次のいずれかを行います。
このドキュメントの説明に従って、予約を使用しないインスタンスを構成します。
予約と一致しないプロパティを持つインスタンスを作成または更新します。
テスト、デバッグ、分離されたデプロイなどのタスクにインスタンスを使用する場合は、予約を使用しないようにできます。
制限事項
予約を使用しないように既存のインスタンスを更新できるのは、インスタンスが一致する予約を自動的に使用するように構成されている場合のみです。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、サービスと API にアクセスするために ID を確認するプロセスです。 Google Cloud ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
予約を作成する権限: プロジェクトに対する
compute.reservations.create
-
インスタンスを作成するには:
- プロジェクトに対する
compute.instances.create
- カスタム イメージを使用して VM を作成する: イメージに対する
compute.images.useReadOnly
- スナップショットを使用して VM を作成する: スナップショットに対する
compute.snapshots.useReadOnly
- インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する
compute.instanceTemplates.useReadOnly
- レガシー ネットワークを VM に割り当てる: プロジェクトに対する
compute.networks.use
- VM の静的 IP アドレスを指定する: プロジェクトに対する
compute.addresses.use
- レガシー ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトに対する
compute.networks.useExternalIp
- VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.use
- VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.useExternalIp
- VM の VM インスタンス メタデータを設定する: プロジェクトに対する
compute.instances.setMetadata
- VM にタグを設定する: VM に対する
compute.instances.setTags
- VM にラベルを設定する: VM に対する
compute.instances.setLabels
- VM が使用するサービス アカウントを設定する: VM に対する
compute.instances.setServiceAccount
- VM に新しいディスクを作成する: プロジェクトに対する
compute.disks.create
- 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する
compute.disks.use
- 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する
compute.disks.useReadOnly
- プロジェクトに対する
-
インスタンス テンプレートを作成する: プロジェクトに対する
compute.instanceTemplates.create
空の YAML ファイルを作成します。
作成したばかりの YAML ファイルにインスタンスのプロパティをエクスポートするには、
gcloud compute instances export
コマンドを使用します。gcloud compute instances export INSTANCE_NAME \ --destination=YAML_FILE \ --zone=ZONE
次のように置き換えます。
INSTANCE_NAME
: インスタンスの名前。YAML_FILE
: 前の手順で作成した空の YAML ファイルのパス。ZONE
: インスタンスが存在するゾーン。
YAML 構成ファイルで、
consumeReservationType
をNO_RESERVATION
に設定します。reservationAffinity: consumeReservationType: NO_RESERVATION
インスタンスを更新して再起動するには、
--most-disruptive-allowed-action
フラグをRESTART
に設定してgcloud compute instances update-from-file
コマンドを使用します。gcloud compute instances update-from-file INSTANCE_NAME \ --most-disruptive-allowed-action=RESTART \ --source=YAML_FILE \ --zone=ZONE
次のように置き換えます。
INSTANCE_NAME
: インスタンスの名前。YAML_FILE
: 前の手順で変更した構成データを含む YAML ファイルのパス。ZONE
: インスタンスが存在するゾーン。
既存のインスタンスの属性を表示するには、
instances.get
メソッドにGET
リクエストを送信します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
次のように置き換えます。
PROJECT_ID
: インスタンスが作成されたプロジェクトの ID。ZONE
: インスタンスが存在するゾーン。INSTANCE_NAME
: インスタンスの名前。
GET
リクエストの出力をファイルまたはテキスト エディタに保存します。コピーした出力を変更して、consumeReservationType
フィールドをNO_RESERVATION
に変更します。{ ... "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, ... }
インスタンスを更新して再起動するには、
instances.update
メソッドにPUT
リクエストを送信します。リクエストで、次の操作を行います。リクエスト URL に、
RESTART
に設定されたmostDisruptiveAllowedAction
クエリ パラメータを含めます。リクエスト本文には、前の手順で編集した
GET
リクエストの出力を使用します。
リクエストは次の例のようになります。
PUT https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central-1/instances/instance-01?mostDisruptiveAllowedAction=RESTART { ... "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, ... }
Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
[名前] フィールドに、インスタンスの名前を入力します。
[リージョン] リストと [ゾーン] リストで、インスタンスを作成するリージョンとゾーンを選択します。
インスタンスに使用するマシンタイプを指定します。
ナビゲーション メニューで [詳細設定] をクリックします。
[予約] セクションで、[予約を使用しない] を選択します。
[作成] をクリックします。
INSTANCE_NAME
: インスタンスの名前。MACHINE_TYPE
: インスタンスに使用するマシンタイプ。ZONE
: インスタンスを作成するゾーン。PROJECT_ID
: インスタンスを作成するプロジェクトの ID。ZONE
: インスタンスを作成するゾーン。INSTANCE_NAME
: インスタンスの名前。MACHINE_TYPE
: インスタンスに使用するマシンタイプ。IMAGE_PROJECT
: OS イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
COUNT
: 作成するインスタンスの数。MACHINE_TYPE
: インスタンスに使用するマシンタイプ。NAME_PATTERN
: インスタンスの名前パターン。インスタンス名の一連の数字を置き換えるには、一連のハッシュ(#
)文字を使用します。たとえば、名前パターンにinstance-#
を使用すると、instance-1
、instance-2
で始まり、COUNT
で指定されたインスタンスの数まで続く名前のインスタンスが生成されます。ZONE
: インスタンスを一括作成するゾーン。PROJECT_ID
: インスタンスを一括作成するプロジェクトの ID。ZONE
: インスタンスを一括作成するゾーン。COUNT
: 作成するインスタンスの数。NAME_PATTERN
: インスタンスの名前パターン。インスタンス名の一連の数字を置き換えるには、一連のハッシュ(#
)文字を使用します。たとえば、名前パターンにinstance-#
を使用すると、instance-1
、instance-2
で始まり、COUNT
で指定されたインスタンスの数まで続く名前のインスタンスが生成されます。MACHINE_TYPE
: インスタンスに使用するマシンタイプ。IMAGE_PROJECT
: OS イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
次の操作を行うときに、マネージド インスタンス グループ(MIG)のコンピューティング インスタンスが予約を使用しないようにします。
Google Cloud コンソールで、[インスタンス テンプレートの作成] ページに移動します。
[名前] フィールドに、インスタンス テンプレートの名前を入力します。
[ロケーション] セクションで、リージョン(デフォルト)またはグローバルのインスタンス テンプレートを作成するかどうかを指定します。
[マシンの構成] セクションで、テンプレートを使用して作成するインスタンスに使用するマシンタイプを指定します。
[詳細オプション] セクションを開き、次の操作を行います。
[管理] セクションを開きます。
[予約] セクションで、[予約を使用しない] を選択します。
[作成] をクリックします。
INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。REGION
: インスタンス テンプレートを作成するリージョン。MACHINE_TYPE
: インスタンス テンプレートを使用して作成されたインスタンスに使用するマシンタイプ。グローバル インスタンス テンプレートを作成するには:
instanceTemplates.insert
メソッド。リージョン インスタンス テンプレートを作成するには:
regionInstanceTemplates.insert
メソッド。PROJECT_ID
: インスタンス テンプレートを作成するプロジェクトの ID。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。MACHINE_TYPE
: インスタンス テンプレートを使用して作成されたインスタンスに使用するマシンタイプ。IMAGE_PROJECT
: OS イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
Go
ローカル開発環境でこのページの Go サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Java
ローカル開発環境でこのページの Java サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Node.js
ローカル開発環境でこのページの Node.js サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Python
ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
コンピューティング インスタンスが予約を使用しないようにするために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1) (
roles/compute.instanceAdmin.v1
)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。この事前定義ロールには、コンピューティング インスタンスが予約を使用しないようにするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
コンピューティング インスタンスが予約を使用しないようにするには、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
予約の使用を防ぐ
コンピューティング インスタンスが予約を使用しないようにするには、予約アフィニティ(
reservationAffinity
)プロパティを予約を使用しないように設定します。このプロパティは、インスタンスが一致する予約、特定の予約、または予約をまったく使用できないかどうかを制御します。1 つ以上のインスタンスが予約を使用しないようにするには、次のいずれかの方法を使用します。
既存のインスタンスでの使用を防止する
実行中のインスタンスを更新して、予約が自動的に消費されないようにすることができます。変更を有効にするには、このセクションで説明するようにインスタンスを再起動する必要があります。
既存のインスタンスが予約を使用しないようにするには、次のいずれかのオプションを選択します。
gcloud
REST
インスタンスの更新の詳細については、インスタンス プロパティを更新するをご覧ください。
インスタンスの作成中に使用を防止する
予約を使用できないコンピューティング インスタンスを作成するには、次のいずれかのオプションを選択します。
コンソール
gcloud
予約を使用できないインスタンスを作成するには、
--reservation-affinity
フラグをnone
に設定してgcloud compute instances create
コマンドを使用します。gcloud compute instances create INSTANCE_NAME \ --machine-type=MACHINE_TYPE \ --reservation-affinity=none \ --zone=ZONE
次のように置き換えます。
Go
予約を使用できないインスタンスを作成するには、次のコードサンプルを使用します。
Java
予約を使用できないインスタンスを作成するには、次のコードサンプルを使用します。
Node.js
予約を使用できないインスタンスを作成するには、次のコードサンプルを使用します。
Python
予約を使用できないインスタンスを作成するには、次のコードサンプルを使用します。
REST
予約を消費できないインスタンスを作成するには、
instances.insert
メソッドにPOST
リクエストを送信します。リクエストの本文に、NO_RESERVATION
に設定されたconsumeReservationType
フィールドを含めます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } }
次のように置き換えます。
インスタンスの作成の詳細については、Compute Engine インスタンスの作成と開始をご覧ください。
インスタンスの一括作成中に使用を防止する
予約を使用できないコンピューティング インスタンスを一括作成するには、次のいずれかのオプションを選択します。
gcloud
予約を使用できないインスタンスを一括で作成するには、
--reservation-affinity
フラグをnone
に設定してgcloud compute instances bulk create
コマンドを使用します。たとえば、単一のゾーンでインスタンスを一括作成し、名前パターンを指定するには、次のコマンドを実行します。
gcloud compute instances bulk create \ --count=COUNT \ --machine-type=MACHINE_TYPE \ --name-pattern="NAME_PATTERN" \ --reservation-affinity=none \ --zone=ZONE
次のように置き換えます。
REST
予約を消費できないインスタンスを一括作成するには、
instances.bulkInsert
メソッドにPOST
リクエストを送信します。リクエストの本文に、NO_RESERVATION
に設定されたconsumeReservationType
フィールドを含めます。たとえば、単一のゾーンでインスタンスを一括作成し、名前パターンを指定するには、次のようにリクエストを送信します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": COUNT, "namePattern": "NAME_PATTERN", "instanceProperties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } } }
次のように置き換えます。
インスタンスを一括作成する方法の詳細については、VM を一括作成するをご覧ください。
インスタンス テンプレートの作成中に使用を防止する
予約を使用しないようにインスタンスを構成するインスタンス テンプレートを作成すると、そのテンプレートを使用して次のことができます。
予約を使用しないインスタンスを構成するインスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。
コンソール
gcloud
予約を使用しないようにインスタンスを構成するインスタンス テンプレートを作成するには、
--reservation-affinity
フラグをnone
に設定してgcloud compute instances-templates create
コマンドを使用します。予約を使用しないようにインスタンスを構成するリージョン インスタンス テンプレートを作成するには、次のコマンドを実行します。グローバル インスタンス テンプレートを作成する場合は、
--instance-template-region
フラグを使用せずに同じコマンドを使用します。gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --instance-template-region=REGION \ --machine-type=MACHINE_TYPE \ --reservation-affinity=none
次のように置き換えます。
Go
予約を使用しないインスタンスを構成するインスタンス テンプレートを作成するには、次のコードサンプルを使用します。
Java
予約を使用しないインスタンスを構成するインスタンス テンプレートを作成するには、次のコードサンプルを使用します。
Node.js
予約を使用しないインスタンスを構成するインスタンス テンプレートを作成するには、次のコードサンプルを使用します。
Python
予約を使用しないインスタンスを構成するインスタンス テンプレートを作成するには、次のコードサンプルを使用します。
REST
予約を使用しないインスタンスを構成するインスタンス テンプレートを作成するには、次のいずれかのメソッドに
POST
リクエストを送信します。リクエスト本文に
consumeReservationType
フィールドを追加し、値をNO_RESERVATION
に設定します。たとえば、リージョン インスタンス テンプレートを作成し、予約を使用しないように指定するには、次のようにリクエストを送信します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/InstanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } } }
次のように置き換えます。
インスタンス テンプレート作成の詳細については、インスタンス テンプレートを作成するをご覧ください。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-03-04 UTC。
-