为存储分区设置对象生命周期政策

本页面介绍了如何为 Google Distributed Cloud (GDC) 气隙存储分区设置对象生命周期政策。

准备工作

存储分区是限定于特定项目的资源。项目充当容器,用于对您的存储分区进行分组,并通过 Management API 服务器实现对这些存储分区的管理。您必须先创建新项目或选择您拥有足够权限的现有项目,然后才能执行本页面上的操作。

所需 IAM 角色

请与您的 IAM 项目管理员联系,请求在项目命名空间中授予以下角色:

  • Project Bucket Admin (project-bucket-admin):创建、更新和删除存储分区。
  • Project Bucket Object Viewer (project-bucket-object-viewer):查看和检查存储分区及对象的详细信息。

如需了解详情,请参阅授予存储桶访问权限

准备环境

如需针对管理 API 服务器或全局 API 服务器运行命令,请执行以下操作:

  1. 登录并生成区域管理 API 服务器的 kubeconfig 文件(如果您还没有)。
  2. 对于双可用区存储分区,请执行以下操作:
    • 与您的基础设施运维人员 (IO) 确认是否已为配对的可用区创建 BucketLocationConfig 自定义资源。
    • 为全局 API 服务器生成 kubeconfig 文件

在存储桶上设置对象生命周期政策

您可以使用对象生命周期政策自动管理存储分区中的对象。这有助于您在整个数据生命周期内更高效地存储数据。生命周期配置是一组规则,用于根据某些匹配条件使一组对象过期。

您可以创建带有或不带对象生命周期政策的存储桶。您还可以在创建存储桶后应用新的生命周期政策、更新现有生命周期政策或移除现有生命周期政策。

对于未启用版本控制的存储分区,过期意味着异步永久移除对象。

对于启用版本控制的存储分区,如果当前对象版本不是删除标记,则过期会将当前版本变为非当前版本,然后向当前版本添加删除标记。

如需设置和修改对象生命周期政策,请更新 Bucket.spec.bucketPolicy.lifecyclePolicy 字段。

CLI

以下是一些配置了不同对象生命周期政策的存储桶资源示例:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire all objects after 365 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 365
        id: expire-all-after-365-days
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects in the logs/ directory after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-logs-dir-after-30-days
        status: Enabled
        filter:
          prefixFilter: "logs/"
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects having specific tag after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-tagged-objects-after-30-days
        status: Enabled
        filter:
          tagFilters:
          - key: environment
            value: dev
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire noncurrent versions after 90 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - noncurrentExpiration:
          noncurrentDays: 90
        id: expire-noncurrent-after-90-days
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects on a specific date"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          date: "2027-01-01T00:00:00Z"
        id: expire-on-specific-date
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with multiple lifecycle rules and advanced filters"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      # Rule 1: Expire objects in 'tmp/' directory AND tagged with 'status=ready' after 7 days
      - expiration:
          days: 7
        id: expire-ready-tmp-objects
        status: Enabled
        filter:
          prefixFilter: "tmp/"
          tagFilters:
          - key: status
            value: ready
      # Rule 2: Expire all objects in 'logs/' directory after 90 days
      - expiration:
          days: 90
        id: expire-logs-after-90-days
        status: Enabled
        filter:
          prefixFilter: "logs/"

对生命周期政策进行的任何更新都适用于现有对象以及在更新后上传的对象。

如果存储桶还配置了对象锁定,则对象在保留天数结束之前会受到保护,不会失效。