Google Cloud Platform (GCP) は、大手クラウド サービス プロバイダーの 1 つであり、企業や開発者がアプリケーションをシームレスに構築、デプロイ、スケールできるよう、幅広いツールとサービスを提供しています。GCP 内で最も広く使用されているサービスの 1 つがCompute Engineです。これにより、ニーズに合わせた仮想マシン (VM) を作成・管理できます。Web アプリケーション、データベース、開発環境のいずれを実行している場合でも、Compute Engine は最新のワークロードに必要な柔軟性とスケーラビリティを提供します。
しかし、組織が成長したり再編されたりすると、Compute Engine インスタンスをプロジェクト Aからプロジェクト Bに移行する必要が生じる場合があります。これは、チーム間でリソースを移行したり、プロジェクトを統合したり、別の組織と協力したりする場合によくあります。GCP には、VM インスタンスをプロジェクト間で移動するための直接的な「コピー」機能はありません(特に、プロジェクトが異なるアカウントの所有である場合)。ただし、スナップショットと共有権限を使用した信頼できる回避策があります。
この包括的なガイドでは、VM のスナップショットの作成から、権限の設定、ターゲット プロジェクトへのインスタンスのデプロイまで、全プロセスを段階的に解説します。経験豊富なクラウド エンジニアでも、GCP を探索し始めた初心者でも、このガイドで、このタスクを効率的に実行するための知識とツールが得られます。この記事を読み終える頃には、別々のアカウントが所有するプロジェクト間でも、GCP Compute Engine インスタンスをシームレスに移行できるようになります。
複雑な移行プロセスに見えるかもしれないものを、シンプルにしていきましょう。
目次
プロジェクト間で GCP コンピュート インスタンスをコピーする理由
プロジェクト間で VM インスタンスをコピーする必要が生じる理由はいくつかあります:
- プロジェクトの移行:より良い組織化や請求のために、リソースを新しいプロジェクトに移動する。
- コラボレーション:別のチームや組織と VM を共有する。
- バックアップと復旧:災害復旧のために、別のプロジェクトに VM のバックアップを作成する。
前提条件
開始する前に、次のことを確認してください:
- アクセス権限:
- オーナーまたは編集者の権限をプロジェクト A(ソース プロジェクト)で持っていること。
- 十分な権限(例:roles/compute.admin)をプロジェクト B(ターゲット プロジェクト)で持っていること。
- 請求の有効化:
- リソースを作成して使用するには、両方のプロジェクトで請求が有効になっている必要があります。
- Cloud SDK のインストール:
- ローカル マシンにGoogle Cloud SDKをインストールするか、Cloud Shell を使用します。
- ソース VM のスナップショット:
- ソース VM インスタンスのスナップショットを作成する必要があります。
GCP コンピュート インスタンスをコピーするためのステップバイステップ ガイド
ステップ 1:プロジェクト A のソース VM のスナップショットを作成する
スナップショットは、VM のディスクのポイントインタイム コピーです。スナップショットを作成するには:
- Google Cloud Consoleを開きます。プロジェクト A。
- 次の順に移動します:Compute Engine> スナップショット。
- スナップショットを作成。
- 必要な詳細を入力します:
- 名前:スナップショットに一意の名前を付けます(例:
my-vm-snapshot)。 - ソース ディスク:ソース VM のディスクを選択します。
- ロケーション:マルチリージョン、またはターゲット プロジェクトに近いリージョンを選択します。
- 名前:スナップショットに一意の名前を付けます(例:
- 作成。
または、次のgcloudコマンドを使用できます:
gcloud compute snapshots create my-vm-snapshot \
--source-disk=SOURCE_DISK_NAME \
--source-disk-zone=SOURCE_DISK_ZONE \
--project=PROJECT_A_ID
置き換え:
SOURCE_DISK_NAMEを、ソース VM のディスク名に置き換えます。SOURCE_DISK_ZONEを、ソース VM のゾーンに置き換えます(例:us-central1-a)。PROJECT_A_IDを、プロジェクト A の ID に置き換えます。
ステップ 2:スナップショットをプロジェクト B と共有する
プロジェクト B がスナップショットにアクセスできるようにするには、ターゲット アカウントに権限を付与する必要があります。
- プロジェクト Aで、次の順に移動します:Compute Engine> スナップショット。
- 作成したスナップショットを選択します。
- 情報パネルを表示(または、編集用の鉛筆アイコン)。
- IAM ポリシー バインディングを追加します:
- メンバー:
user:[email protected](ターゲット アカウントのメールアドレスに置き換えます)。 - ロール:
Compute Storage Admin。
- メンバー:
または、次のgcloudコマンドを使用できます:
gcloud compute snapshots add-iam-policy-binding my-vm-snapshot \
--member="user:[email protected]" \
--role="roles/compute.storageAdmin" \
--project=PROJECT_A_ID
ステップ 3:スナップショットを使用してプロジェクト B にディスクを作成する
スナップショットが共有されたので、プロジェクト Bで、スナップショットを使用して新しいディスクを作成できます。
- 次のプロジェクトに切り替えます:プロジェクト B(Google Cloud Console または Cloud Shell):
gcloud config set project PROJECT_B_ID
- 共有スナップショットから新しいディスクを作成します:
gcloud compute disks create my-new-disk \
--source-snapshot=projects/PROJECT_A_ID/global/snapshots/my-vm-snapshot \
--zone=TARGET_ZONE \
--project=PROJECT_B_ID
置き換え:
PROJECT_A_IDを、プロジェクト A の ID に置き換えます。my-vm-snapshotを、スナップショットの名前に置き換えます。TARGET_ZONEを、ディスクを作成するゾーンに置き換えます(例:us-central1-a)。PROJECT_B_IDを、プロジェクト B の ID に置き換えます。
ステップ 4:ディスクを使用してプロジェクト B に新しい VM を作成する
ディスクを作成したら、それを使用してプロジェクト B に新しい VM を起動できます。
- 次のコマンドを実行して、新しい VM を作成します:
gcloud compute instances create my-new-vm \
--zone=TARGET_ZONE \
--disk=name=my-new-disk,boot=yes,auto-delete=no \
--project=PROJECT_B_ID
- プレースホルダーを適切な値に置き換えます:
my-new-vm:新しい VM の名前。my-new-disk:スナップショットから作成されたディスクの名前。TARGET_ZONE:VM を作成するゾーン。PROJECT_B_ID:プロジェクト B の ID。
ステップ 5:新しい VM を確認する
VM を作成したら、実行中でアクセス可能であることを確認します:
- 次の順に移動します:Compute Engine> VM インスタンス。対象プロジェクト:プロジェクト B。
- 新しい VM のステータスを確認します。
- VM に SSH 接続し、想定どおりに動作していることを確認します。
ベスト プラクティス
- リソースのクリーンアップ:不要になった場合は、不要な料金を避けるため、プロジェクト A のスナップショットを削除します:
gcloud compute snapshots delete my-vm-snapshot --project=PROJECT_A_ID
- ラベルの使用:リソース管理を改善するため、プロジェクト B の新しい VM とディスクにラベルを追加します。
- コストの監視:予期しない料金を避けるため、両方のプロジェクトの請求に注意してください。
まとめ
GCP Compute Engine インスタンスをあるプロジェクトから別のプロジェクトにコピーするには、特にプロジェクトが異なるアカウントの所有である場合、スナップショットを作成し、共有して、それを使用して新しい VM を作成する必要があります。このガイドの手順に従うことで、セキュリティと効率を確保しながら VM を正常に移行できます。
このガイドが役に立った場合は、他の人と共有したり、下にコメントを残したりしてください。質問や GCP リソースの管理に関する追加のヒントがあれば、お知らせください。