本页面介绍了如何在您的组织中的新存储桶和现有存储桶上停用软删除功能。
新存储桶默认启用了软删除,以防止数据丢失。如果需要,您可以通过修改软删除政策来为现有存储桶停用软删除,也可以通过设置组织级默认标记来为新存储桶默认停用软删除。请注意,停用软删除后,您无法恢复已删除的数据,包括意外或恶意删除的数据。
所需的角色
如需获得停用软删除所需的权限,请让您的管理员为您授予组织级别的以下 IAM 角色:
-
Storage Admin (
roles/storage.admin
) -
Tag Administrator (
roles/resourcemanager.tagAdmin
) -
Organization Viewer (
roles/resourcemanager.organizationViewer
)
这些预定义角色可提供停用软删除所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
停用软删除需要以下权限:
-
storage.buckets.get
-
storage.buckets.update
-
storage.buckets.list
(仅当您计划使用 Google Cloud 控制台执行本页面上的说明时,才需要此权限)如需了解作为 Tag Admin (
roles/resourcemanager.tagAdmin
) 角色的一部分可提供的所需权限,请参阅管理标记所需的权限。
如需了解如何授予角色,请参阅为存储桶设置和管理 IAM 政策或管理对项目的访问权限。
为特定存储桶停用软删除
开始之前,请考虑以下事项:
如果您在停用期间从包含软删除对象的存储桶中停用软删除政策,则现有的软删除对象会保留到之前应用的保留时长到期为止。
对存储桶停用软删除政策后,Cloud Storage 不会保留新删除的对象。
由于元数据缓存,当您在存储桶中停用软删除政策时,Cloud Storage 中的更改不会立即生效。因此,我们建议您在停用软删除政策后,至少等待 30 秒,然后再启动任何其他删除操作(例如批量删除)。这样可确保您的数据是软删除,而不是永久删除。如需详细了解 Cloud Storage 操作的一致性,请参阅 Cloud Storage 一致性。
按照以下说明为特定存储桶停用软删除:
控制台
- 在 Google Cloud 控制台中,转到 Cloud Storage 存储桶页面。
在存储桶列表中,点击要停用软删除政策的存储桶的名称。
点击保护标签页。
在软删除政策部分,点击停用以停用软删除政策。
点击确认。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
运行带有 --clear-soft-delete
标志的 gcloud storage buckets update
命令:
gcloud storage buckets update --clear-soft-delete gs://BUCKET_NAME
其中:
BUCKET_NAME
是存储桶的名称。例如my-bucket
。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。创建一个包含以下信息的 JSON 文件:
{ "softDeletePolicy": { "retentionDurationSeconds": "0" } }
使用
cURL
,通过PATCH
Bucket 请求调用 JSON API:curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的 JSON 文件的路径。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
为项目中 100 个最大的存储桶停用软删除
使用 Google Cloud 控制台,您可以一次为最多 100 个存储桶停用软删除,这些存储桶按最多的软删除字节数或最高的软删除字节数与实时字节数比率排序,这样您就可以管理对软删除费用影响最大的存储桶。
- 在 Google Cloud 控制台中,转到 Cloud Storage 存储桶页面。
在 Cloud Storage 页面中,点击设置。
点击软删除标签页。
在删除的字节数最多的存储桶列表中,选择要停用软删除的存储桶。
点击关闭软删除。
所选存储桶上已停用软删除。
为项目中的多个存储桶或所有存储桶停用软删除
使用 Google Cloud CLI,运行含 --project
标志和 *
通配符的 gcloud storage buckets update
命令,为项目中的多个或所有存储桶批量停用软删除:
gcloud storage buckets update --project=PROJECT_ID --clear-soft-delete gs://*
其中:
PROJECT_ID
是项目的 ID。例如my-project
。
在文件夹内的所有存储桶中停用软删除
使用 Google Cloud CLI,运行 gcloud projects list
和 gcloud storage buckets update
命令,以便对指定文件夹内的所有项目中的存储桶停用软删除。
运行 gcloud projects list
和 gcloud storage buckets update
命令,以列出指定文件夹下的所有存储桶,然后为该文件夹中的所有存储桶停用软删除:
gcloud projects list --filter="parent.id: FOLDER_ID" --format="value(projectId)" | while read project do gcloud storage buckets update --project=$project --clear-soft-delete gs://* done
其中:
FOLDER_ID
是文件夹的名称。例如123456
。
在组织级层停用软删除
使用 Google Cloud CLI,运行含 --clear-soft-delete
标志和 *
通配符的 gcloud storage buckets update
命令,在组织级别停用软删除:
运行含 --clear-soft-delete
标志和 *
通配符的 gcloud storage buckets update
命令,为您组织中的所有存储桶停用软删除:
gcloud projects list --format="value(projectId)" | while read project do gcloud storage buckets update --project=$project --clear-soft-delete gs://* done
Cloud Storage 会为现有存储桶停用软删除。已软删除的对象将保留在存储桶中,直到软删除保留时长到期,之后这些对象会被永久删除。
为新存储桶停用软删除
虽然新存储桶会默认启用软删除,但您可以使用标记来阻止默认启用软删除。标记使用 storage.defaultSoftDeletePolicy
键在组织级层应用 0d
(零天)软删除政策,这会停用该功能并防止日后保留已删除的数据。
按照以下说明在创建新存储桶时默认停用软删除。请注意,以下说明并不等同于设置强制实施特定软删除政策的组织政策,这意味着您仍可以根据需要通过指定政策在特定存储桶上启用软删除。
使用 Google Cloud CLI 创建
storage.defaultSoftDeletePolicy
标记,将其用于更改新存储桶的默认软删除保留时长。请注意,只有storage.defaultSoftDeletePolicy
标记名称会更新默认的软删除保留时长。使用
gcloud resource-manager tags keys create
命令创建标记键:gcloud resource-manager tags keys create storage.defaultSoftDeletePolicy \ --parent=organizations/ORGANIZATION_ID \ --description="Configures the default softDeletePolicy for new Storage buckets."
其中:
ORGANIZATION_ID
是您要为其设置默认软删除保留时长的组织的数字 ID。例如12345678901
。如需了解如何查找组织 ID,请参阅获取组织资源 ID。
使用
gcloud resource-manager tags values create
命令为0d
(零天)创建标记值,以便在新存储桶上默认停用软删除保留期限:gcloud resource-manager tags values create 0d \ --parent=ORGANIZATION_ID/storage.defaultSoftDeletePolicy \ --description="Disables soft delete for new Storage buckets."
其中:
ORGANIZATION_ID
是您要为其设置默认软删除保留时长的组织的数字 ID。例如12345678901
。
使用
gcloud resource-manager tags bindings create
命令将标记附加到资源:gcloud resource-manager tags bindings create \ --tag-value=ORGANIZATION_ID/storage.defaultSoftDeletePolicy/0d \ --parent=RESOURCE_ID
其中:
ORGANIZATION_ID
是创建标记时所属组织的数字 ID。例如12345678901
。RESOURCE_ID
是您要为其创建标记绑定的组织的全名。例如,如需将标记附加到organizations/7890123456
,请输入//cloudresourcemanager.googleapis.com/organizations/7890123456
。
为超出指定费用阈值的存储桶停用软删除
使用 Python 版 Cloud 客户端库,您可以使用 Python 客户端库示例为超出指定相对费用阈值的存储桶停用软删除。该示例执行以下操作:
计算每种存储类别的存储空间相对费用。
评估您的存储桶累积的软删除费用。
为软删除用量设置费用阈值并列出超出您设置的阈值的存储桶,以及允许您为超出阈值的存储桶停用软删除。
如需详细了解如何设置 Python 客户端库和使用示例,请参阅 Cloud Storage 软删除费用分析器 README.md
页面。
以下示例为超出指定费用阈值的存储桶停用软删除:
后续步骤
查看注意事项,然后再重新启用软删除。