配置回收站保留政策

默认情况下,Compute Engine 会在回收站中保留已删除的标准快照,保留期限为三天,之后才会永久清除这些快照。您可以修改回收站保留政策,以配置更短的保留期限或停用回收站。

本文档介绍了如何查看和配置回收站保留政策。

如需查看回收站的内容或从回收站恢复快照,请参阅管理回收站

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init
  • 设置默认区域和可用区
  • REST

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

      安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI

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

所需的角色和权限

如需获得查看和管理回收站保留政策所需的权限,请让您的管理员为您授予项目的 Compute Admin (roles/compute.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含查看和管理回收站保留政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需查看和管理回收站保留政策,您需要具备以下权限:

  • 如需设置、修改和删除回收站保留政策中的规则,请执行以下操作: compute.snapshotRecycleBinPolicy.patch
  • 如需查看回收站保留政策,请执行以下操作: compute.snapshotRecycleBinPolicy.get
  • 如需查看标准快照的回收站保留政策,请执行以下操作:针对快照的 compute.snapshots.getEffectiveRecycleBinRule 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

回收站保留政策的运作方式

回收站保留政策是一组全局规则,用于定义所有项目和组织中标准快照的保留期限。

回收站保留政策具有以下特征:

  • 默认保留期限为 3 天,称为系统默认规则。您无法移除系统默认规则,但可以替换它。

  • 如需替换系统默认规则,您可以添加分别适用于项目或组织的项目或组织默认规则。您还可以向回收站保留政策添加基于标记的规则。

  • 保留政策中的规则冲突按以下方式解决:

    1. 基于标记的规则会覆盖项目和组织的默认规则。
    2. 如果多个基于标记的规则适用于标准快照,则系统会应用保留期限最长的规则。不过,项目默认规则不会覆盖基于标记的规则,即使前者的保留期限更长也是如此。
    3. 项目默认规则会覆盖组织默认规则。
    4. 如果没有任何规则适用于标准快照,则系统会应用默认规则。

    如需了解详情,请参阅回收站保留政策中的规则层次结构

  • 虽然 Google 不建议停用回收站,但您可以通过创建保留期限为零天的规则,针对项目、组织或代码停用回收站。 删除受相应规则约束的所有标准快照时,系统会立即将其清除。

  • 回收站保留政策的更改不会应用于现有的可恢复快照,即回收站中现有的已删除标准快照。

限制

  • 仅支持标准快照。删除归档快照、即时快照、磁盘和映像后,系统会立即永久清除这些内容。
  • 回收站保留政策的更改不会应用于现有的可恢复快照,即回收站中现有的已删除标准快照。
  • 如需为标记指定保留政策规则,该标记必须已存在。
  • 您可以仅为项目、组织或标记设置保留政策规则。
  • 如果您为某个标记设置了保留政策规则,则该保留政策仅适用于具有该标记的标准快照。归档快照、即时快照、磁盘以及具有该标记的任何其他资源与回收站不兼容,因此在您删除它们时,系统会永久清除它们。

为项目或组织设置或移除默认保留期限

如需替换项目或组织内的三天系统默认规则,或停用回收站,请为项目或组织设置默认保留政策规则。

您可以使用 gcloud CLI 或 REST。

gcloud CLI

使用 gcloud beta compute snapshot-recycle-bin-policy update 命令。 使用 --set-rule=default 标志设置默认的保留政策规则,并使用 --standard-snapshots-retention-duration-days 标志指定相应规则的保留期限。

  • 如需为组织设置默认保留政策,请使用以下命令:

    gcloud beta compute snapshot-recycle-bin-policy update \
      --set-rule=default \
      --standard-snapshots-retention-duration-days=DEFAULT_RETENTION_PERIOD_DAYS \
      --organization=ORGANIZATION_ID
    

    将以下变量替换为相应值:

    • DEFAULT_RETENTION_PERIOD_DAYS:项目或组织的保留期限(以天为单位)。指定一个介于 07 之间的值。如需停用回收站,请指定 0
    • ORGANIZATION_ID:可选。 您要为其设置默认保留规则的组织的 ID。例如 123456789012。您必须指定组织 ID 或项目 ID,但不能同时指定这两者。

    如需为项目设置默认保留政策,请将上述命令中的 --organization 标志替换为 --project=<var>PROJECT_ID</var>,其中 PROJECT_ID 是项目的 ID。

  • 如需移除项目或组织的默认保留规则,请使用相同的命令,但指定 --remove-rule=default 而不是 --set-rule=default

    例如,如需移除组织的默认保留政策规则,请执行以下操作:

    gcloud beta compute snapshot-recycle-bin-policy update \
      --organization=ORGANIZATION_ID \
      --remove-rule=default
    

    ORGANIZATION_ID 替换为组织的 ID。

REST

构建对 snapshotRecycleBinPolicy 方法的 PATCH 请求。

在请求正文中,添加一个 rules 对象,用于指定默认回收站期限(以天为单位)。

  • 如需为项目添加或修改保留政策,请执行以下操作:

    PATCH  https://compute./compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy
    {
    "rules": {
      "default": {
        "standardSnapshots": {
          "retentionDurationDays": DEFAULT_RETENTION_PERIOD_DAYS
        }
      }
    }
    }
    

    将以下变量替换为相应值:

    • PROJECT_ID:项目 ID,例如 dev-project
    • DEFAULT_RETENTION_PERIOD_DAYS:默认保留期限(以天为单位)。指定一个介于 07 之间的值。 如需停用回收站,请指定 0
  • 如需为组织添加或修改保留政策,请发出 PATCH 请求,如上例所示,但使用以下网址。

    PATCH https://compute./compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/

    请求正文与上一个示例中的相同。

    ORGANIZATION_ID 替换为组织的 ID。 例如 123456789012

  • 如需移除项目或组织的默认保留规则,请发出类似的 PATCH 请求,但为 default 规则指定 null

    例如,如需移除组织的默认保留规则,请执行以下操作:

    PATCH https://compute./compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/
    {
    "rules": {
       "default": null
     }
    }
    

    ORGANIZATION_ID 替换为组织的 ID。

为标记设置或移除保留政策

如需为具有特定标记的标准快照设置特定保留期限,请在项目级或组织级设置基于标记的规则。基于标记的规则会替换项目或组织的默认规则,并具有以下特征:

  • 组织级或项目级的基于标记的规则适用于组织或项目中具有相应标记的所有标准快照。
  • 仅当项目级标记规则的保留期限更长时,该规则才会覆盖组织级标记规则。

    例如,组织级标记规则的保留期限为两天,而项目级标记规则的保留期限为一天,那么组织级标记规则会覆盖项目级标记规则。

如需了解详情,请参阅回收站保留政策中的规则层次结构

您可以使用 gcloud CLI 或 REST。

gcloud CLI

如需为标记设置保留政策规则,请使用 gcloud beta compute snapshot-recycle-bin-policy update 命令。使用 --set-rule 标志指定标记的名称,并使用 --standard-snapshots-retention-duration-days 标志指定标记的回收站保留期限(以天为单位)。

gcloud beta compute snapshot-recycle-bin-policy update \
  --set-rule=TAG_NAMESPACED_NAME \
  --standard-snapshots-retention-duration-days=RETENTION_PERIOD_DAYS \
  --organization=ORGANIZATION_ID

将以下变量替换为相应值:

  • TAG_NAMESPACED_NAME:标记的命名空间名称,包括其值。例如 my-project-id/tag-key/tag-valuemy-organization-id/tag-key/tag-value
  • RETENTION_PERIOD_DAYS:保留期限(以天为单位),范围为 07。如需为具有此标记的快照停用回收站,请指定 0
  • ORGANIZATION_ID:可选。 规则所适用的组织的 ID。例如 123456789012。您必须指定组织 ID 或项目 ID,但不能同时指定这两者。

如需为项目设置默认保留政策,请将上述命令中的 --organization 标志替换为 --project=<var>PROJECT_ID</var>,其中 PROJECT_ID 是项目的 ID。

如需移除标记的保留政策规则,请使用相同的命令,但指定 --remove-rule=TAG_NAMESPACED_NAME 而不是 --set-rule。例如,如需移除组织的基于标记的规则,请执行以下操作:

gcloud beta compute snapshot-recycle-bin-policy update \
  --organization=ORGANIZATION_ID \
  --remove-rule=TAG_NAMESPACED_NAME

REST

如需为标记设置保留政策规则,请为 snapshotRecycleBinPolicy 方法构建 PATCH 请求。在请求正文中,添加一个 rules 对象,用于指定标记的名称和保留期限(以天为单位)。

  • 如需为项目中的标记设置或更新保留政策规则,请执行以下操作:
PATCH https://compute./compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy/
{
  "rules": {
    "TAG_NAMESPACED_NAME_1": {
      "standardSnapshots": { 
        "retentionDurationDays": RETENTION_PERIOD_DAYS
      }
    }
  }
}

将以下变量替换为相应值:

  • PROJECT_ID:项目的 ID。
  • TAG_NAMESPACED_NAME:标记的命名空间名称,包括其值。例如 my-project-id/env/prodmy-organization-id/env/build
  • RETENTION_PERIOD_DAYS:保留期限(以天为单位),范围为 07。如需为具有此标记的快照停用回收站,请指定 0

  • 如需为组织中的标记设置或更新保留政策规则,请发出 PATCH 请求,如上例所示,但使用以下网址。

PATCH https://compute./compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/

ORGANIZATION_ID 替换为组织的 ID。请求正文与上一个示例中所述的相同。

  • 如需移除标记的保留政策规则,请构建 PATCH 请求(如前面的示例中所示),但要为基于标记的规则指定 null。例如,如需移除项目中的基于标记的规则的保留政策规则,请执行以下操作:
PATCH https://compute./compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy
{
  "rules": {
    "TAG_NAMESPACED_NAME_1": null
  }
}

查看项目或组织的回收站保留政策

如需确定项目或组织是否具有回收站的自定义规则、查看任何基于标记的规则,或检查回收站是否已停用,请查看项目或组织的回收站保留政策中的规则。

如需查看项目或组织的回收站保留期政策中的规则,请使用 gcloud CLI 或 REST。

gcloud CLI

如需查看项目或组织的回收站保留政策(包括基于标记的规则),请使用 gcloud beta compute snapshot-recycle-bin-policy describe 命令

  • 如需查看组织的回收站保留政策,请执行以下操作:

    gcloud beta compute snapshot-recycle-bin-policy describe \
      --organization=ORGANIZATION_ID
    

    ORGANIZATION_ID 替换为组织的 ID。

  • 如需查看项目的回收站保留政策,请执行以下操作:

    gcloud beta compute snapshot-recycle-bin-policy describe \
    --project=PROJECT_ID
    

    PROJECT_ID 替换为项目 ID。

输出结果是一个规则对象列表,类似于以下内容。输出中包含三天系统默认规则。

  rules:
    default:
      standardSnapshots:
        retentionDurationDays: '2'
    database-project/Testing-tag-key/build:
      standardSnapshots:
        retentionDurationDays: '0'
    database-project/Testing-tag-key/critical:
      standardSnapshots:
        retentionDurationDays: '5'
    systemRules:
      default:
        standardSnapshots:
          retentionDurationDays: '3'

每条规则的 retentionDurationDays 字段都表示相应规则的保留期限(以天为单位)。在此示例中,项目 database-project 包含以下三条规则:

  • 针对所有带有 Testing-tag-key/critical 标记的快照设置 5 天规则。
  • 立即删除带有标记 Testing-tag-key/build 的所有快照。
  • 项目中的所有其他快照的默认保留期限为 2 天。

REST

如需查看项目或组织的所有保留政策规则(包括基于标记的规则),请构建一个向 snapshotRecycleBinPolicy.get 方法发出的 GET 请求。

  • 如需查看组织的保留政策,请执行以下操作:

    GET https://compute./compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy
    

    ORGANIZATION_ID 替换为组织的 ID。

  • 如需查看项目的保留政策,请执行以下操作:

    GET https://compute./compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy
    

    PROJECT_ID 替换为相应项目的 ID。

响应类似于以下内容。输出中包含三天系统默认规则。

  {
    "rules": {
     "default": {
      "standardSnapshots": {
        "retentionDurationDays": "2"
      }
    },
    "database-project/Testing-tag-key/build": {
      "standardSnapshots": {
        "retentionDurationDays": "0"
      }
    },
    "database-project/Testing-tag-key/critical": {
      "standardSnapshots": {
        "retentionDurationDays": "5"
      }
    },
     "systemRules": {
      "default": {
       "standardSnapshots": {
         "retentionDurationDays": "3"
      }
     }
    }
  }
 }

每条规则的 retentionDurationDays 字段都表示相应规则的保留期限(以天为单位)。在此示例中,项目 database-project 包含三条规则:

  • 针对带有 Testing-tag-key/critical 标记的所有快照设置 5 天规则。
  • 立即删除带有标记 Testing-tag-key/build 的所有快照。
  • 项目中的所有其他快照的默认保留期限为 2 天。

如果保留期限为零,则 Compute Engine 会在快照删除后立即永久清除该快照。否则,保留期限表示 Compute Engine 将在回收站中保留快照的时长,之后才会永久清除快照。

查看代码的回收站保留期限

如需查看标记的保留政策,请检索定义该标记的项目或组织的保留政策

检查特定快照的回收站保留期限

如需确定标准快照在删除后是否会保留在回收站中以及保留多长时间,请查看其保留期限。如果保留期限为零,则快照在删除后会立即被永久清除。否则,保留期限表示快照在被删除后将在回收站中保留多长时间。

您可以使用Google Cloud 控制台、gcloud CLI 或 REST 查看特定快照的保留期限。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往快照页面。

转到“快照”页面

  1. 快照标签页上,查看项目中的快照的列表。

  2. 名称列中,点击标准快照的名称。系统随即会显示所选快照的快照详情页面。

  3. 回收站保留期限属性显示了快照的回收站保留期限快照。

gcloud CLI

如需查看特定快照的保留期限,请使用 gcloud beta compute snapshots get-effective-recycle-bin-rule 命令

gcloud beta compute snapshots get-effective-recycle-bin-rule \
  SNAPSHOT_NAME \
  --project=PROJECT_ID

将以下变量替换为相应值:

  • PROJECT_ID:包含相应快照的项目的 ID。
  • SNAPSHOT_NAME:快照的名称。

输出类似于以下内容:

retentionDurationDays: '5'

retentionDurationDays 字段表示快照的回收站保留期限(以天为单位)。

REST

如需查看特定快照的保留期限,请构建对 getEffectiveRecycleBinRule 方法GET 请求。

GET https://compute./compute/beta/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/getEffectiveRecycleBinRule

将以下变量替换为相应值:

  • PROJECT_ID:包含相应快照的项目的 ID。
  • SNAPSHOT_NAME:快照的名称。

响应类似于以下示例:

{
  "retentionDurationDays": "5"
}

retentionDurationDays 字段表示快照的回收站保留期限(以天为单位)。

如果保留期限为零,则 Compute Engine 会在快照删除后立即永久清除该快照。否则,保留期限表示 Compute Engine 将在回收站中保留快照的时长,之后才会永久清除快照。

如需确定保留政策中的哪些规则适用于快照,请将快照的标记与项目和组织的保留政策中的标记和默认规则进行比较。

如需更改标准快照的保留期限,请选择以下选项之一:

后续步骤