インスタンス名の変更


このドキュメントでは、仮想マシン(VM)インスタンスの名前を変更する方法について説明します。インスタンスを停止または起動するには、インスタンスの停止と起動をご覧ください。インスタンスを一時停止または再開するには、インスタンスの一時停止と再開をご覧ください。インスタンスのライフサイクルについては、インスタンスのライフサイクルをご覧ください。

インスタンスを作成するときは、名前を指定する必要があります。作成したインスタンスの名前を次のような名前に変更することもできます。

  • インスタンスで実行されているワークロードをより適切に表している
  • インスタンスで実行されているオペレーティング システムを参照している
  • 組織で求められる命名規則を遵守している

インスタンス URI

インスタンス名を変更すると、プロジェクトに影響する場合があります。インスタンス リソースを名前で参照するのではなく、永続的である URI で参照します。URI のフォーマットは次のとおりです。 projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_ID.

インスタンス ID の取得については、インスタンス ID の取得をご覧ください。

料金

インスタンス名を変更しても、請求額は変わりません。また、請求書には、VM インスタンスが名前ではなく、在庫管理単位(SKU)で表示されるため、VM インスタンスの名前は請求書上で確認できません。

制限事項

自動的に命名されたリソース
インスタンス名を変更しても、元のインスタンス名に基づいて命名されたリソースは更新されません。たとえば、インスタンスを作成する際にディスクをインスタンスに追加し、インスタンス名に基づいて自動的にディスクの名前を変更する場合は、ディスクの名前は変更されません。
Console
VM の名前を更新するには、Cloud Console でブラウザを更新する必要があります。
DHCP サーバー
インスタンスの名前を変更すると、DHCP サーバーは更新されたホスト名で DHCP リクエストに応答します。グローバル DNS の場合は HOSTNAME.c.PROJECT_ID.internal の形式を使用し、ゾーン DNS には HOSTNAME.ZONE.c.PROJECT_ID.internal の形式を使用します。詳細については、内部 DNS 名のタイプをご覧ください。
ホスト名

ホスト名は、インスタンスの名前を変更すると変更されます。Windows では、ホスト名の更新時に再起動が必要になることがあります。

カスタムホスト名を持つインスタンスは更新されません。

ホストで直接ホスト名を変更しても、VM リソースの名前には影響しません。

インスタンスの状態

名前を変更する前にインスタンスを停止します。名前を変更できるのは TERMINATED 状態のインスタンスのみです。たとえば、SUSPENDED 状態のインスタンス名は変更できません。

マネージド インスタンス グループ

マネージド インスタンス グループ(MIG)内のインスタンスの名前は、ステートレスの MIG の base instance name プロパティから自動的に継承され元に戻すことができないため、変更できません。

命名規則

プロジェクト内の別のインスタンスですでに使用されている名前では変更できません。

インスタンス名は、リソースの命名規則に従う必要があります。

始める前に

  • このガイドのコマンドラインの例を使用する場合、以下を行ってください。
    1. gcloud コマンドライン ツールの最新バージョンをインストールするか、最新バージョンに更新します。
    2. デフォルトのリージョンとゾーンを設定します。
  • このガイドの API の例を使用する場合、API アクセスを設定します
  • 以下を確認し、必要に応じて更新します。
    • Cloud Monitoring のグループ、グラフ、アラート: Monitoring は文字列と一致します。インスタンス名を変更しても、これらの文字列は更新されません。VM の名前を変更した場合は、Monitoring ルールを更新して、名前が変更された VM をレポートに含めるようにします。
    • コンソール URL: VM の名前を変更すると、コンソール URL が変更されます。VM の名前を変更する場合は、VM のコンソール URL を参照するリンク(ブラウザのブックマークなど)を更新します。
    • Identity and Access Management(IAM)の条件付きロール バインディング: 条件付きロール バインディングでは、リソースの名前に関する権限を付与できます。たとえば、VM の名前が特定の文字列で始まる場合、IAM がユーザーにロールを付与する可能性があります。VM の名前を変更すると、これらのバインディングは更新されません。接頭辞が付いてた名前が適用されている一連の VM を変更するため、VM リソースに対するユーザーのアクセス権に影響する可能性があります。VM の名前を変更する場合は、これらのバインディングを更新します。
    • 内部 DNS サービス キャッシュ: 内部 DNS サービスは、内部 DNS 名を VM に割り当てます。ホスト名は、グローバル DNS の場合は HOSTNAME.c.PROJECT_ID.internal、ゾーン DNS の場合は HOSTNAME.ZONE.c.PROJECT_ID.internal です。VM の名前を変更すると、これらのホスト名が変更されます。その後、内部 DNS サービスが新しいホスト名への解決を開始し、以前の DNS 名へのリクエストは失敗します。VM の名前を変更する場合は、DNS キャッシュを更新してホスト名を更新する必要があります。グローバル DNS ホスト名とゾーン DNS ホスト名の詳細については、内部 DNS 名のタイプをご覧ください。
    • メタデータ クエリ: VM の名前を変更した後、メタデータ サーバーは新しい名前を報告します。VM の名前を変更する場合は、メタデータ サーバーにクエリを行うスクリプトまたはプログラムを更新して、VM の新しい名前をクエリするようにします。
    • 外部 IP アドレスを制限する組織のポリシー: 外部 IP アドレスを持つ VM への制約は、VM 名を参照します。VM の名前を変更しても、この制約は更新されません。VM の名前を変更する場合は、外部 IP 組織ポリシーを VM の新しい名前で更新します。

インスタンス名の変更

名前を変更する前にインスタンスを停止する必要があります。名前変更後に Google Cloud Console でエラー メッセージが表示された場合は、ブラウザを更新します。

このタスクに必要な権限

このタスクを行うには、次の権限が必要です。

  • インスタンスの compute.instances.setName

gcloud

インスタンス名を変更する前に、gcloud compute instances stop コマンドを使用してインスタンスを停止してください。名前を変更したら、gcloud compute instances start コマンドを使用してインスタンスを起動します。

gcloud beta compute instances set-name コマンドを使用してインスタンスの名前を変更します。

gcloud beta compute instances set-name INSTANCE_NAME \
    --new-name=NEW_INSTANCE_NAME

以下を置き換えます。

  • INSTANCE_NAME: 名前を変更するインスタンスの名前
  • NEW_INSTANCE_NAME: インスタンスの新しい名前

API

インスタンス名を変更する前に、instances.stop メソッドを使用してインスタンスを停止します。名前を変更したら、instances.start メソッドを使用してインスタンスを起動します。

名前の変更のステータスを取得するには、rename API から返されたオペレーション ID をポーリングします。名前を変更すると、以前の名前に依存する API 呼び出しからステータス コード 404 Not Found が返されます。詳細については、API レスポンスの処理をご覧ください。

instances.setName メソッドを使用してインスタンスの名前を変更します。

POST https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setName

{
    Name: "NEW_INSTANCE_NAME"
}

以下を置き換えます。

  • PROJECT_ID: 名前を変更するインスタンスを含むプロジェクトの ID
  • ZONE: 名前を変更するインスタンスを含むゾーン
  • INSTANCE_NAME: 名前を変更するインスタンス
  • NEW_INSTANCE_NAME: インスタンスの新しい名前

インスタンス ID の取得

インスタンス ID を使用すると、VM を不変の値で参照できます。

gcloud

gcloud compute instances describe コマンドを使用してインスタンス ID を取得します。このコマンドは、id フィールドにインスタンス ID を文字列として返します。

gcloud compute instances describe INSTANCE_NAME

INSTANCE_NAME は、インスタンス名で置き換えます。

API

instances.get メソッドを使用してインスタンス ID を取得します。このメソッドは、レスポンスの本文でインスタンス ID を id の文字列値として返します。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

以下を置き換えます。

  • PROJECT_ID: ID を取得するインスタンスを含むプロジェクトの ID。

  • ZONE: ID を取得するインスタンスを含むゾーン

  • INSTANCE_NAME: ID を取得するインスタンスの名前

次のステップ