根據預設,快照會以全域範圍建立。全域範圍快照會儲存在特定儲存位置,且可在任何區域或可用區還原 (用於建立新磁碟)。如要進一步控管位置隔離,可以建立區域範圍快照。區域範圍快照會將所有快照資料和中繼資料儲存在範圍區域中。您也可以使用區域範圍快照,限制可建立及還原快照的區域。
本文說明如何設定允許的地區,以建立及還原地區快照。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 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
如要從專案的快照允許還原位置清單中移除區域 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:要移除區域範圍快照還原存取權的區域。