默认情况下,快照是使用全球范围创建的。全球范围的快照存储在特定存储位置,可以在任何区域或可用区进行恢复(用于创建新磁盘)。如需进行额外的基于位置的隔离控制,您可以创建区域范围的快照。区域范围限定的快照会将所有快照数据和元数据存储在限定区域中。使用区域范围限定的快照时,您还可以限制可创建和恢复快照的区域。
本文档介绍了如何设置区域快照创建和恢复的允许位置。
准备工作
-
如果您尚未设置身份验证,请进行设置。
身份验证用于验证您的身份,以便访问 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 身份验证文档中的使用 REST 时进行身份验证。
限制
- 设置区域范围会替换项目的所有默认存储位置设置。
- 设置区域范围仅适用于新的区域快照。
- 您无法将全球范围快照转换为区域级快照。您必须使用适当的范围创建新的快照。
所需的角色和权限
如需获得为区域范围快照设置存储和恢复位置所需的权限,请让管理员向您授予项目的以下 IAM 角色:
- Compute Instance Admin (v1)
(
roles/compute.instanceAdmin.v1
) - 如需连接到可以作为服务账号运行的虚拟机:
Service Account User (v1) (
roles/iam.serviceAccountUser
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含设置快照创建和恢复位置所需的权限。如需查看所需的确切权限,请展开所需权限部分:
设置允许的快照创建位置
默认情况下,您可以在所有区域创建快照。若要限制您可以在哪些位置创建区域范围限定的快照,请在项目级别设置允许访问的位置。设置访问位置后,您只能在这些位置为项目创建区域范围的快照。
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
如需在所有区域恢复某个项目的快照,请使用
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
:您要为其移除恢复访问权限的区域范围限定快照所在的区域。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-09-05。
-