根據預設,快照建立時會採用全域範圍。全域範圍快照會儲存在特定儲存位置,且可在任何區域或可用區還原 (用於建立新磁碟)。如要進一步控管位置隔離,可以建立區域範圍的快照。區域範圍快照會將所有快照資料和中繼資料,一併儲存在指定區域。您也可以使用區域範圍快照,限制可建立及還原快照的區域。
本文說明如何設定區域快照的建立和還原作業允許的位置。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,您不需要設定驗證機制。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
限制
- 設定區域範圍會覆寫專案的所有預設儲存位置設定。
- 設定區域範圍只會套用至新的區域快照。
- 您無法將全域範圍快照轉換為區域範圍快照。您必須建立範圍適當的新快照。
所需角色和權限
如要取得設定區域範圍快照的儲存和還原位置所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Compute 執行個體管理員 (v1)
(
roles/compute.instanceAdmin.v1) - 如要連線至可做為服務帳戶執行的 VM,請使用「服務帳戶使用者 (v1)」(
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色具備設定快照建立和還原位置所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
設定允許建立快照的位置
根據預設,您可以在所有區域建立快照。如要限制可建立區域範圍快照的位置,請在專案層級設定允許的存取位置。設定存取位置後,您只能在這些位置為專案建立區域範圍的快照。
gcloud
如要允許可用區 A 中的可用區磁碟在任何區域建立快照,請使用 gcloud beta compute disk-settings update 指令:
gcloud beta compute disk-settings update \
--zone=ZONE_A \
--access-location-policy=all-regions \
如要允許區域 A 中的區域磁碟在任何區域建立快照,請使用 gcloud beta compute disk-settings update 指令:
gcloud beta compute disk-settings update \
--region=REGION_A \
--access-location-policy=all-regions
如要允許 A 區域中的磁碟僅在 B 區域建立快照,請使用 gcloud beta compute disk-settings update 指令:
gcloud beta compute disk-settings update \
--access-location-policy=specific-regions \
--region=REGION_A \
--add-access-locations=REGION_B
更改下列內容:
ZONE_A:磁碟的可用區,可在任何區域建立快照。REGION_A:專案中所有磁碟的區域,這些磁碟需要區域範圍的快照建立限制。REGION_B:允許建立區域範圍快照的區域。您可以將多個區域設為允許存取的位置。您必須將來源磁碟儲存的區域納入允許的區域。
REST
如要允許可用區 A 中的可用區磁碟在任何區域建立快照,請對 diskSettings.patch 方法提出 PATCH 要求:
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE_A/diskSettings?updateMask=accessLocation
{
"accessLocation":
{
"policy":"ALL_REGIONS"
}
}
如要讓 A 區域中的區域磁碟只能在 B 區域建立快照,請向 regionDiskSettings.patch 方法提出 PATCH 要求:
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION_A/diskSettings?updateMask=accessLocation
{
"accessLocation":
{
"policy":"SPECIFIC_REGIONS",
"locations":
{
"REGION_B":{"region":"REGION_B"}
}
}
}
更改下列內容:
PROJECT_ID:專案 ID。ZONE_A:磁碟的可用區。REGION_A:磁碟的區域。REGION_B:允許建立快照的區域。您可以將多個區域設為允許存取位置。您必須將來源磁碟儲存所在的區域,納入允許的區域中。
設定允許還原快照的位置
根據預設,您可以將區域和全域範圍的快照還原至任何區域。如要設定區域範圍快照的還原位置,請在專案層級設定允許的存取位置。您必須為每個專案個別設定允許的存取位置。設定存取位置後,您只能在這些位置還原專案的區域範圍快照。
gcloud
如要允許區域 A 中專案的快照在「所有」區域中還原,請使用 gcloud beta compute snapshot-settings update 指令:
gcloud beta compute snapshot-settings update \
--project=PROJECT_ID \
--region=REGION_A \
--access-location-policy=all-regions
如要讓區域 A 中專案的快照只能在區域 B 中還原,請使用 gcloud beta compute snapshot-settings update 指令:
gcloud beta compute snapshot-settings update \
--project=PROJECT_ID \
--access-location-policy=specific-regions \
--region=REGION_A \
--add-access-locations=REGION_B
更改下列內容:
PROJECT_ID:專案 ID。REGION_A:儲存區域範圍快照的區域。REGION_B:允許還原區域範圍快照的區域。您可以將多個區域設為允許的還原位置。
REST
如要讓區域 A 中專案的快照在所有區域還原,請對 regionSnapshotSettings.patch 方法發出 PATCH 要求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/snapshotSettings?updateMask=accessLocation
{
"accessLocation":
{
"policy":"ALL_REGIONS"
}
}
如要讓區域 A 中專案的快照只能在區域 B 中還原,請對 regionSnapshotSettings.patch 方法發出 PATCH 要求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/snapshotSettings?updateMask=accessLocation
{
"accessLocation":
{
"policy":"SPECIFIC_REGIONS",
"locations":
{"REGION_B":
{"region":"REGION_B"}
}
}
}
更改下列內容:
PROJECT_ID:專案 ID。REGION_A:儲存區域範圍快照的區域。REGION_B:允許還原區域範圍快照的區域。您可以將多個區域設為允許還原的位置。
編輯允許的快照還原位置
gcloud
如要查看儲存在 A 區域的專案快照可還原的位置,請使用 gcloud beta compute snapshot-settings describe 指令:
gcloud beta compute snapshot-settings describe \
--project=PROJECT_ID \
--region=REGION_A
如要從儲存在區域 A 的專案快照允許還原位置清單中移除區域 B,請使用 gcloud beta compute snapshot-settings update 指令:
gcloud beta compute snapshot-settings update \
--project=PROJECT_ID \
--access-location-policy=specific-regions \
--remove-access-locations=REGION_B \
--region=REGION_A
更改下列內容:
PROJECT_ID:專案 ID。REGION_A:儲存區域範圍快照的區域。REGION_B:要移除/還原區域範圍快照存取權的區域。
REST
如要查看儲存在區域 A 的專案快照允許還原位置,請對 regionSnapshotSettings.get 方法發出 GET 要求:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/snapshotSettings
如要從儲存在區域 A 的專案快照允許還原位置清單中移除區域 B,請對 regionSnapshotSettings.patch 方法發出 PATCH 要求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/snapshotSettings?updateMask=accessLocation
{
"accessLocation":
{
"policy":"SPECIFIC_REGIONS",
"locations":
{"REGION_B":{}}
}
}
更改下列內容:
PROJECT_ID:專案 ID。REGION_A:儲存區域範圍快照的區域。REGION_B:要移除/還原區域範圍快照存取權的區域。