マシンイメージを作成すると、それを使用してソース コンピューティング インスタンスのコピーを作成できます。マシンイメージを使用する場合の詳細については、マシンイメージを使用するときをご覧ください。
マシンイメージには、インスタンスのクローンを作成する場合に必要となるほとんどの情報とデータが含まれています。
マシンイメージは変更ができません。ただし、マシンイメージからインスタンスを作成するときに、マシンイメージのほぼすべてのプロパティをオーバーライドできます。
Google Cloud コンソール、Google Cloud CLI または REST のいずれかを使用して、マシンイメージからインスタンスを作成できます。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、 Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して 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.
60 分でソース マシン イメージから最大 6 個のインスタンスを作成できます。この上限を超えると、インスタンスの作成オペレーションが失敗し、次のようなエラーが返されます。
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
定義した上限(60 分で 6 個のインスタンス)を超えるインスタンスを作成するには、ソース インスタンスから追加のマシンイメージを作成するか、新しいインスタンスから有効期間の短いマシンイメージを作成します。その後、新しいマシンイメージから必要な数のインスタンスを作成できます。
Google Cloud コンソールを使用して、リージョン ディスクがアタッチされたマシンイメージからインスタンスを作成することはできません。Google Cloud CLI または REST を使用して、アタッチされているリージョン ディスクごとに
replicaZones
パラメータとdeviceName
パラメータを指定します。詳細については、マシンイメージからインスタンスを作成する(プロパティのオーバーライドあり)をご覧ください。Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
[
VM を作成...] メニューで、[マシンイメージ] を選択します。表示された [マシンイメージから VM を作成] ウィンドウで、次の操作を行います。
マシンイメージを選択します。
インスタンスを作成して起動するには、[作成] をクリックします。
INSTANCE_NAME
: インスタンスの名前ZONE
: インスタンスのゾーンSOURCE_MACHINE_IMAGE_NAME
: インスタンスの作成元にするマシンイメージPROJECT_ID
: 実際のプロジェクト ID。ZONE
: インスタンスのゾーン。INSTANCE_NAME
: インスタンスの名前。SOURCE_MACHINE_IMAGE_URL
: インスタンスの作成に使用するマシンイメージの完全な URL または部分的な URL。たとえば、my-machine-image
というマシンイメージがmyProject
というプロジェクトにあるとします。有効な URL は次のとおりです。https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- マシンイメージからインスタンスを作成するときに、アタッチされたディスクのプロパティのうち、ディスク名以外のプロパティをオーバーライドすることはできません。
アタッチされた各リージョン ディスクの
replicaZones
パラメータと、リージョン ディスクのマシンイメージのdeviceName
を指定する必要があります。マシンイメージの生成に使用したソース インスタンスと新しいインスタンスが同じプロジェクトで、同じリージョンにある場合、次のことが適用されます。
- ソース インスタンスと新しいインスタンスのプロパティはほとんどが同じです。異なるプロパティとしては、自動的に割り当てられるエフェメラル IP アドレスなどがあります。
- 新しいインスタンスを作成するときにソース インスタンスがまだ存在している場合、新しいインスタンスはソース インスタンスと同じ名前とゾーンを使用できません。
マシンイメージを生成するために使用するソース インスタンスと新しいインスタンスが同じプロジェクトに属していても、リージョンが異なる場合は、次のようになります。
- 新しいインスタンスのすべてのゾーンリソースとリージョン リソースをオーバーライドする必要があります。たとえば、インスタンスを作成するとき使用するマシンイメージのソース インスタンスが別のリージョンに属している場合は、サブネットワークやリージョン ファイアウォール ルールなどのリージョン リソースをオーバーライドする必要があります。ただし、ロードバランサやサービス アカウントなどのグローバル リソースは、変更しないのであれば、オーバーライドする必要はありません。
Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
[
VM を作成...] メニューで、[マシンイメージ] を選択します。表示された [マシンイメージから VM を作成] ウィンドウでテンプレートを選択し、[
カスタマイズ] をクリックします。省略可: その他の構成オプションを指定します。詳細については、インスタンス作成時の構成オプションをご覧ください。
インスタンスを作成して起動するには、[作成] をクリックします。
PROJECT_ID
: プロジェクト ID。ZONE
: インスタンスのゾーン。INSTANCE_NAME
: インスタンスの名前。NEW_MACHINE_TYPE
: インスタンスに使用するマシンタイプ。SOURCE_MACHINE_IMAGE_URL
: インスタンスの作成に使用するマシンイメージの完全な URL または部分的な URL。たとえば、my-machine-image
というマシンイメージがmyProject
というプロジェクトにあるとします。有効な URL は次のとおりです。https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- 基本フィールドをオーバーライドすると、マシンイメージ内の対応する基本フィールドがリクエストの基本フィールド値に置き換えられます。基本フィールドには、
machineType
やname
などのパラメータが含まれます。 - 繰り返しフィールドをオーバーライドすると、そのプロパティのすべての繰り返し値が、リクエストで指定された対応する値に置き換えられます。繰り返しフィールドは一般的に、型が
list
のプロパティです。たとえば、disks
とnetworkInterfaces
は繰り返しフィールドです。 nested object
をオーバーライドすると、マシンイメージ内のオブジェクトは、リクエスト内の対応するオブジェクト仕様とマージされます。ネストされたオブジェクトが繰り返しフィールド内にある場合、そのフィールドは繰り返しフィールドのルールに従って扱われます。ラベルはこのルールの例外であり、ラベルの型がobject
であっても繰り返しフィールドとして扱われます。別のプロジェクトに保存されているマシンイメージへのアクセスを許可します。
権限をソース プロジェクトとマシンイメージのいずれかに付与できます。
gcloud compute machine-images add-iam-policy-binding
コマンドを使用して、マシンイメージに権限を付与します。gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
次のように置き換えます。
MACHINE_IMAGE_PROJECT
: ソース マシンイメージを含むプロジェクトのプロジェクト ID。MACHINE_IMAGE_NAME
: 権限バインディングを追加するマシンイメージの名前。ACCOUNT_EMAIL
: インスタンスを作成しているserviceAccount
またはuser
のメールアドレス。メールアドレスは必要な接頭辞を含む形式にしてください。接頭辞は次のいずれかにする必要があります。user:
: メールアドレスがユーザー アカウントに関連付けられている場合に指定します。例:user:user@example.com
serviceAccount:
: メールアドレスがサービス アカウントに関連付けられている場合に指定します。例:serviceAccount:123456789000-compute@developer.gserviceaccount.com
例
たとえば、
my-machine-image
というマシンイメージへのcompute.admin
バインディングをサービス アカウントのメールアドレス123456789000-compute@developer.gserviceaccount.com
に追加するには、次のgcloud CLI
コマンドを使用します。gcloud compute machine-images add-iam-policy-binding my-machine-image \ --project=machine-image-project \ --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \ --role='roles/compute.admin'
gcloud compute instances create
コマンドを実行するユーザーに、マシンイメージに関連付けられたサービス アカウントにサービス アカウント ユーザーのロール(roles/iam.serviceAccountUser
)を付与します。gcloud compute instances create
コマンドを使用して、マシンイメージからインスタンスを作成します。gcloud compute instances create INSTANCE_NAME \ --project=INSTANCE_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --subnet=SUBNET
次のように置き換えます。
INSTANCE_PROJECT_ID
: インスタンスを作成するプロジェクトのプロジェクト IDINSTANCE_NAME
: インスタンスの名前ZONE
: インスタンスのゾーンMACHINE_IMAGE_PROJECT
: マシンイメージが置かれているプロジェクトのプロジェクト IDMACHINE_IMAGE_NAME
: インスタンスの作成元にするマシンイメージSERVICE_ACCOUNT_EMAIL
: インスタンスに関連付けるサービス アカウントのメールアドレスSUBNET
: サブネットとインスタンスが同じプロジェクト内にある場合は、SUBNET をインスタンスと同じリージョンにあるサブネットの名前に置き換えます。共有 VPC ネットワークのサブネットを指定するには、
SUBNET
を次の形式の文字列に置き換えます。projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
次のように置き換えます。
HOST_PROJECT_ID
: 共有 VPC ホスト プロジェクトのプロジェクト ID。REGION
: サブネットのリージョンSUBNET_NAME
: サブネットの名前
例
たとえば、次のコマンドは、
my-machine-image
というマシンイメージから、us-east1-b
ゾーンのvm-project
にmy-instance
という VM を作成します。--service-account
フラグには、新しく作成された VM にアタッチするサービス アカウントを指定します。このフラグを指定しないと、ソース サービス アカウントを両方のプロジェクトで共有できず、オペレーションが失敗します。gcloud compute instances create my-instance \ --project=vm-project \ --zone=us-east1-b \ --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \ --service-account=000123456789-compute@developer.gserviceaccount.com
VM が作成されると、次のような出力が表示されます。
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
- マシンイメージの詳細を確認する
- Compute Engine インスタンスの作成について学習する。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
マシンイメージから Compute Engine インスタンスを作成するために必要な権限を取得するには、コンピューティング インスタンスまたはプロジェクトに対する Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
制限事項
マシンイメージからインスタンスを作成する場合、次の制限が適用されます。
インスタンスをマシンイメージから作成する(オーバーライドなし)
作成するインスタンスが完全にマシンイメージに基づいていて、プロパティの変更がない場合は、この方式を使用します。
コンソール
gcloud
gcloud compute instances create
コマンドを使用して、マシンイメージからインスタンスを作成します。gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
次のように置き換えます。
例
たとえば、次の
gcloud
コマンドを使用して、my-machine-image
というマシンイメージからus-east1-b
ゾーンにmy-instance
というインスタンスを作成できます。gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
インスタンスが作成されると、次のような出力が表示されます。
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
API で、
instances.insert
メソッドに対してPOST
リクエストを作成します。リクエストの本文に次のパラメータを指定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
次のように置き換えます。
マシンイメージからインスタンスを作成する(プロパティのオーバーライドあり)
作成するインスタンスが主にマシンイメージに基づいていて、変更がいくつかある場合は、オーバーライド動作を使用できます。オーバーライドを使用するには、インスタンスを作成するときに、既存のマシンイメージのプロパティをオーバーライドする属性を渡します。
オーバーライド機能を使用する場合は、次の点にご注意ください。
コンソール
gcloud
gcloud compute instances create
コマンドを使用してインスタンスをマシンイメージから作成して、オーバーライドするプロパティを追加します。たとえば、次の
gcloud
コマンドを使用すると、us-east1-b
ゾーンにmy-machine-image
マシンイメージからmy-instance
VM を作成できます。この例では、マシンタイプの変更、ホスト メンテナンス ポリシーの停止、regional-disk-0
という名前のリージョン永続ディスクの構成でオーバーライドを行います。gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image \ --machine-type=e2-standard-2 \ --maintenance-policy=TERMINATE \ --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \ --create-disk=device-name=regional-disk-0,\ replica-zones=^:^us-east1-b:us-east1-c,boot=false
REST
インスタンスの作成時にマシンイメージのプロパティをオーバーライドするには、
instances.insert
メソッドに対してPOST
リクエストを作成します。リクエストの本文に、sourceMachineImage
パラメータと必要なオーバーライドを追加します。インスタンスの作成時に通常設定するプロパティを追加できます。たとえば、マシンタイプをオーバーライドする場合は、API 呼び出しにmachineType
パラメータが追加されます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
次のように置き換えます。
オーバーライド動作
Compute Engine API のオーバーライド動作は、RFC 7396 で記述されている JSON マージパッチ ルールに従います。要約すると、次のルールが適用されます。
たとえば、マシンイメージから VM を作成し、その VM でリージョン ディスクを作成する場合は、ディスクのオーバーライドを使用します。これにより、
replicaZones
オプションを指定できるようになります。disks
フィールドは繰り返しフィールドであるため、リージョン ディスクだけでなく、アタッチされているすべてのディスクとブートディスクのディスク構成を指定する必要があります。POST https://compute.googleapis.com/compute/v1/projects/my-proj/zones/us-west1-a/instances { "name": "vm-from-image", "sourceMachineImage": "global/machineImages/my-machine-image", "disks": [ { "kind": "compute#attachedDisks", "boot": true, "autoDelete": true, "deviceName": "boot-device", "initializeParams": { "sourceImage": "projects/my-proj/global/images/my-image", "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", } }, { "kind": "compute#attachedDisk", "boot": false, "autoDelete": true, "deviceName": "regional-device-0", "initializeParams": { "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", "replicaZones": [ "projects/my-proj/zones/us-west1-a", "projects/my-proj/zones/us-west1-c" ] } } ] }
別のプロジェクトのマシンイメージを使用してインスタンスを作成する
別のプロジェクトのマシンイメージからインスタンスを作成するときに、そのソース プロジェクトにアタッチされたサービス アカウントにアクセスできない場合があります。インスタンスを作成するために使用するマシンイメージが別のプロジェクトにある場合は、マシンイメージにアクセスできることを確認して、新しいインスタンスでサービス アカウント プロパティをオーバーライドする必要があります。
共有 VPC ネットワークを使用するプロジェクト間でマシンイメージを共有する場合は、マシンイメージからインスタンスを作成するときに、共有 VPC の詳細を明示的に指定する必要があります。たとえば、非ホスト プロジェクトでインスタンスを作成する場合は、
--network
、--subnet
、または--network-interface
フラグを使用して、ホスト プロジェクトの共有 VPC の詳細を指定します。以降のセクションでは、Google Cloud CLI を使用して、別のプロジェクトにあるマシンイメージからインスタンスを作成する方法について説明します。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-03-27 UTC。
-