如要存取即時快照中擷取的資料,您必須從即時快照還原或建立新磁碟。
本頁說明如何從即時快照建立磁碟。建立磁碟後,您可以將磁碟連接至虛擬機器 (VM) 來使用。
事前準備
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 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
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
必要角色和權限
如要取得從即時快照建立磁碟所需的權限,請要求管理員授予您專案的下列 IAM 角色:
-
Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) -
如要連線至可做為服務帳戶執行的 VM:
服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色具備從即時快照建立磁碟所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要透過即時快照建立磁碟,必須具備下列權限:
-
如何建立磁碟:
-
新磁碟目的地專案的
compute.disks.create
-
來源即時快照的
compute.instantSnapshots.useReadOnly
權限
-
新磁碟目的地專案的
限制
相關限制如下:
從即時快照建立磁碟時,新磁碟一律會採用與快照來源磁碟相同的類型、儲存位置和加密方式。
您無法直接透過即時快照建立 VM,您必須從即時快照建立磁碟,然後使用新磁碟建立 VM。
如果即時快照的來源磁碟使用客戶自行管理或提供的加密金鑰,您必須在透過即時快照建立新磁碟時,提供相同的加密金鑰。
請參考以下範例。假設您有一個磁碟
DISK-1
,並使用客戶提供的加密金鑰 (CSEK) 進行加密KEY-1
。您也從DISK-1
建立了即時快照IS-1
。 如要從IS-1
建立新磁碟,您必須在建立新磁碟時提供相同的金鑰KEY-1
。如果磁碟是以客戶自行管理的加密金鑰 (CMEK) 加密,只有在使用 REST 或 gcloud CLI 建立磁碟時,才需要提供金鑰。如果您使用Google Cloud 控制台,則不需要指定加密金鑰。
透過即時快照建立磁碟
即時快照會採用與來源磁碟相同的加密方式。 從即時快照建立磁碟的步驟,取決於即時快照來源磁碟的加密方式。
來源磁碟會透過下列其中一種方法加密:
- Google-owned and Google-managed encryption keys。這是預設設定。
- 由客戶管理的加密金鑰 (CMEK)
- 客戶提供的加密金鑰 (CSEK)。
如要瞭解特定磁碟的加密方式,請參閱查看磁碟加密資訊。
透過以預設加密方式加密的即時快照建立磁碟
您可以使用 gcloud CLI、 Google Cloud 控制台或 REST,從即時快照建立磁碟。
主控台
找出要還原的即時快照:
前往 Google Cloud 控制台的「快照」頁面。
按一下「即時快照」分頁標籤。
在「Name」(名稱) 欄中,按一下要還原的即時快照名稱。
按一下 [Create Disk] (建立磁碟)。
在「Name」(名稱) 欄位中,輸入磁碟的新名稱。
選用:在「說明」欄位中輸入其他詳細資料。
確認「磁碟來源類型」為「即時快照」。
在「來源即時快照」清單中,選擇即時快照。
選用:設定磁碟的其他自訂項目。
- 輸入大小:在「Size」(大小) 欄位中,指定磁碟大小 (以 GB 為單位)。 大小必須等於或大於快照來源磁碟的大小。
- 排定備份作業:如要讓 Compute Engine 定期為這個新磁碟建立標準快照,請選取「啟用快照排程」核取方塊,然後選擇快照排程。否則請取消勾選核取方塊。
選用:如要整理專案,請新增一或多個標籤。
如要建立磁碟,請按一下「建立」。
gcloud
使用
gcloud compute disks create
指令。您指定的引數取決於要建立區域或地區磁碟。建立可用區磁碟
使用
--zone
旗標指定可用區:gcloud compute disks create DISK_NAME --zone=ZONE \ --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME
更改下列內容:
DISK_NAME
:新磁碟的名稱。ZONE
:新磁碟的可用區,例如europe-west1-a
。SOURCE_INSTANT_SNAPSHOT_NAME
:來源即時快照的名稱。
建立區域磁碟
使用
--region
指定區域,並使用--replica-zones
指定新磁碟的目標複製區域。gcloud compute disks create DISK_NAME \ --region=REGION \ --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \ --replica-zones=ZONE1,ZONE2
更改下列內容:
DISK_NAME
:新磁碟的名稱。REGION
:地區磁碟所在的地區,例如:europe-west1
。SOURCE_INSTANT_SNAPSHOT_NAME
:來源即時快照的名稱。ZONE1,ZONE2
:該地區中這兩個磁碟備用資源所在的區域,例如:europe-west1-b,europe-west1-c
。
REST
如要從即時快照建立區域或地區磁碟,請使用
disks.insert
方法。新磁碟的類型必須與即時快照來源磁碟的類型相同。舉例來說,您無法從區域磁碟的快照建立區域磁碟。建立可用區磁碟
發出
POST
要求,並指定來源即時快照。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/SOURCE_ZONE/disks/insert { "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME" }
更改下列內容:
PROJECT
:要在其中建立新磁碟的專案。SOURCE_ZONE
:即時快照所在的可用區,例如us-central1-a
。磁碟會在這個可用區中建立。NEW_DISK_NAME
:新磁碟的專屬名稱。SOURCE_INSTANT_SNAPSHOT_NAME
:來源即時快照的名稱。
建立區域磁碟
發出
POST
要求,指定來源即時快照和磁碟應複製到的區域。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/region/SOURCE_REGION/disks/insert { "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/regions/SOURCE_REGION/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME", "replicaZones": [ "projects/PROJECT/zones/ZONE1", "projects/PROJECT/zones/ZONE2" ] }
更改下列內容:
PROJECT
:要在其中建立新磁碟的專案。SOURCE_REGION
:即時快照所在的區域。 磁碟是在這個區域中建立。NEW_DISK_NAME
:新磁碟的專屬名稱。SOURCE_INSTANT_SNAPSHOT_NAME
:來源即時快照的名稱。ZONE1,ZONE2
:兩個磁碟副本所在的區域,例如europe-west1-b
、europe-west1-c
。
API 要求回應
如果
POST
要求成功,回應主體會是物件,您可以輪詢該物件,取得磁碟建立狀態。詳情請參閱「處理 API 回應」。透過以 CMEK 或 CSEK 加密的即時快照建立磁碟
主控台
如果即時快照使用 Google 預設或 CMEK 加密,當您從即時快照建立磁碟時, Google Cloud 控制台會自動提供加密金鑰。否則,如果即時快照經過 CSEK 加密,您必須提供加密金鑰才能建立磁碟。
請按照「Google 代管的加密」一節中的步驟操作,並按照下列操作說明指定加密金鑰:
- 在「解密」部分,於「加密金鑰」欄位中輸入加密金鑰。
- 如果金鑰已使用公開 RSA 金鑰包裝,請選取「經過包裝的金鑰」。
gcloud
使用
gcloud compute disks create
指令。如果來源磁碟經過 CMEK 加密,請使用
--kms-key
參數提供金鑰名稱。如果來源磁碟經過 CSEK 加密,請使用
--csek-key-file
參數指定來源磁碟的加密金鑰。CMEK
如要從 CMEK 加密即時快照建立區域磁碟,請使用下列指令:
gcloud compute disks create NEW_DISK_NAME \ --zone=SOURCE_ZONE \ --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \ --kms-key=projects/KMS_PROJECT_NAME/locations/KEYRING_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
更改下列內容:
NEW_DISK_NAME
:新磁碟的名稱。SOURCE_ZONE
:即時快照的儲存區域,例如europe-west1-a
。-
SOURCE_INSTANT_SNAPSHOT_NAME
:來源即時快照的名稱。 KMS_PROJECT_NAME
:包含金鑰的專案。KEYRING_LOCATION
:金鑰所屬金鑰環的位置。 如果金鑰環是全域,請指定global
。否則,請指定金鑰環所在的區域名稱,例如us-west1
。KEY_RING_NAME
:包含金鑰的金鑰環名稱,例如key-ring-1
。KEY_NAME
:用於加密磁碟的金鑰名稱。
CSEK
如要從 CSEK 加密的即時快照建立區域磁碟,請使用下列指令:
gcloud compute disks create NEW_DISK_NAME \ --zone=SOURCE_ZONE \ --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \ --csek-key-file=PATH_TO_CSEK_JSON_FILE
更改下列內容:
NEW_DISK_NAME
:新磁碟的名稱。SOURCE_ZONE
:即時快照的儲存區域,例如europe-west1-a
。-
SOURCE_INSTANT_SNAPSHOT_NAME
:來源即時快照的名稱。 CSEK_JSON_FILE
:包含金鑰的 JSON 檔案路徑。請參閱 CSEK 檔案格式範例。
如要建立地區磁碟,請將上述範例中的
--zone
標記替換為下列標記:--region
:新磁碟的區域--replica-zones
:該地區中這兩個磁碟備用資源所在的區域。
REST
如要從以 CMEK 或 CSEK 加密的即時快照建立區域或地區磁碟,請使用「Google 管理的加密」一節中列出的屬性,向
disks.insert
方法提出POST
要求。此外,請在
diskEncryptionKey
欄位中提供來源磁碟的加密金鑰。diskEncryptionKey
欄位的屬性取決於磁碟是否經過 CMEK 或 CSEK 加密。下列範例說明如何為每種加密類型建立新的區域磁碟。
CMEK
在要求主體中,使用
diskEncryptionKey.kmsKeyName
屬性指定金鑰名稱:{ "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT/locations/LOCATION/keyRings/KEYRING_LOCATION/cryptoKeys/KEY_NAME" } }
更改下列內容:
NEW_DISK_NAME
:新磁碟的專屬名稱。PROJECT
:要在其中建立新磁碟的專案。SOURCE_ZONE
:即時快照所在的可用區,例如us-central1-a
。磁碟會在這個可用區中建立。SOURCE_INSTANT_SNAPSHOT_NAME
:來源即時快照的名稱。KMS_PROJECT
:包含金鑰的專案。LOCATION
:金鑰所屬金鑰環的位置。如果金鑰環是全域,請指定global
。否則,請指定金鑰環所在的區域名稱,例如us-west1
。KEY_RING
:包含金鑰的金鑰環名稱,例如key-ring-1
。KEY
:用於加密磁碟的金鑰名稱。
CSEK
要求主體取決於用於加密即時快照的 CSEK 是否經過 RSA 加密。
如要使用原始 (非 RSA 加密) 金鑰,請在要求主體的
diskEncryptionKey.rawKey
屬性中指定金鑰:POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/SOURCE_ZONE/disks/insert { "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME, "diskEncryptionKey": { "rawKey": "RAW_ENCRYPTION_KEY" } }
將下列項目替換為對應的值:
PROJECT
:要在其中建立新磁碟的專案。SOURCE_ZONE
:即時快照所在的可用區,例如us-central1-a
。磁碟會在這個可用區中建立。NEW_DISK_NAME
:新磁碟的專屬名稱。SOURCE_INSTANT_SNAPSHOT_NAME
:來源即時快照的名稱。RAW_ENCRYPTION_KEY
:用於加密即時快照及其來源磁碟的金鑰,例如SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
。
如要使用 RSA 加密金鑰,請按照下列方式修改上述範例:
對
disks.insert
方法發出POST
要求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/insert
在要求主體的
diskEncryptionKey.rsaEncryptedKey
屬性中指定金鑰:"diskEncryptionKey": { "rsaEncryptedKey": "RSA_ENCRYPTED_KEY" }
將
RSA_ENCRYPTED_KEY
替換為加密金鑰。API 要求回應
如果
POST
要求成功,回應主體會是物件,您可以輪詢該物件,取得磁碟建立狀態。詳情請參閱「處理 API 回應」。除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-08 (世界標準時間)。
-