为区域级范围的快照设置创建和恢复位置


默认情况下,快照会使用全局范围创建。全局范围的快照存储在特定的存储位置中,可在任何区域或可用区中恢复(用于创建新磁盘)。如需实现额外的基于位置的隔离控制,您可以创建区域级范围的快照。区域级范围的快照会将所有快照数据和元数据一起存储在所指定的区域中。借助区域级范围的快照,您还可以限制可创建和恢复快照的区域。

本文档介绍了如何为区域快照创建和恢复设置允许的位置。

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

限制

  • 设置地区范围会替换项目的所有默认存储位置设置
  • 设置地区范围仅适用于新的地区性快照。
  • 您无法将全球范围的快照转换为区域范围的快照。您必须创建具有适当范围的新快照。

所需的角色和权限

如需获得为地区级范围的快照设置存储和恢复位置所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含设置快照创建和恢复位置所需的权限。如需查看所需的确切权限,请展开所需权限部分:

设置允许的快照创建位置

默认情况下,您可以在所有区域创建快照。如需限制您可以在哪些位置创建区域级范围的快照,请在项目级设置允许的访问位置。设置访问位置后,您只能在这些位置为项目创建地区级范围的快照。

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"
    }
  }

如需仅在区域 B 中恢复区域 A 中项目的快照,请向 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:您要移除区域级范围的快照的恢复访问权限的区域。