Skip to main content
StorageGRID solutions and resources
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

StorageGRID 中的存储桶生命周期

贡献者

您可以创建 S3 生命周期配置,以控制何时从 StorageGRID 系统中删除特定对象。

什么是生命周期配置

生命周期配置是一组应用于特定 S3 分段中的对象的规则。每个规则都指定受影响的对象以及这些对象的到期时间(在特定日期或一定天数后)。

每个对象都遵循S3存储分段生命周期或ILM策略的保留设置。配置S3存储分段生命周期后、对于与存储分段生命周期筛选器匹配的对象、生命周期到期操作将覆盖ILM策略。与存储分段生命周期筛选器不匹配的对象将使用ILM策略的保留设置。如果某个对象与存储分段生命周期筛选器匹配、并且未明确指定到期操作、则不会使用ILM策略的保留设置、这意味着对象版本将永久保留。

因此,即使 ILM 规则中的放置说明仍适用于某个对象,该对象也可能会从网格中删除。或者,即使对象的任何 ILM 放置指令已经失效,对象仍可能保留在网格上

StorageGRID 在一个生命周期配置中最多支持 1 , 000 条生命周期规则。每个规则可以包含以下 XML 元素:

  • 到期日期:从对象载入开始,在达到指定日期或达到指定天数时删除对象。

  • NoncurrentVersionExpiration :从对象变为非最新状态开始,在达到指定天数时删除对象。

  • 筛选器(前缀,标记)

  • 状态 *ID

StorageGRID 支持使用以下存储分段操作来管理生命周期配置:

  • DeleteBucketLifecycle

  • GetBucketLifecycleConfiguration

  • PutBucketLifecycleConfiguration

生命周期策略的结构

作为创建生命周期配置的第一步,您需要创建一个包含一个或多个规则的 JSON 文件。例如,此 JSON 文件包含三个规则,如下所示:

  1. 规则 1 仅适用于与前缀 category1/ 匹配且 key2 值为 tag2 的对象。Expiration参数指定与该筛选条件匹配的对象将于 2020 年 8 月 22 日午夜到期。

  2. 规则 2 仅适用于与前缀 category2/ 匹配的对象。Expiration参数指定与过滤器匹配的对象将在被提取后 100 天过期。

    注意 指定天数的规则与对象的载入时间相关。如果当前日期超过载入日期加上天数,则在应用生命周期配置后,可能会立即从存储分段中删除某些对象。
  3. 规则 3 仅适用于与前缀 category3/ 匹配的对象。Expiration参数指定匹配对象的任何非当前版本将在变为非当前版本后 50 天过期。

{
	"Rules": [
        {
		    "ID": "rule1",
			"Filter": {
                "And": {
                    "Prefix": "category1/",
                    "Tags": [
                        {
                            "Key": "key2",
							"Value": "tag2"
                        }
                    ]
                }
            },
			"Expiration": {
                "Date": "2020-08-22T00:00:00Z"
            },
            "Status": "Enabled"
        },
		{
            "ID": "rule2",
			"Filter": {
                "Prefix": "category2/"
            },
			"Expiration": {
                "Days": 100
            },
            "Status": "Enabled"
        },
		{
            "ID": "rule3",
			"Filter": {
                "Prefix": "category3/"
            },
			"NoncurrentVersionExpiration": {
                "NoncurrentDays": 50
            },
            "Status": "Enabled"
        }
    ]
}

将生命周期配置应用于存储分段

创建生命周期配置文件后、您可以通过发出PutBucketLifecycleConfiguration请求将其应用于存储分段。

此请求将示例文件中的生命周期配置应用于名为的分段中的对象 testbucket

aws s3api --endpoint-url <StorageGRID endpoint> put-bucket-lifecycle-configuration
--bucket testbucket --lifecycle-configuration file://bktjson.json

要验证生命周期配置是否已成功应用于存储分段、请发送问题描述a GetBucketLifecycleConfiguration请求。例如:

aws s3api --endpoint-url <StorageGRID endpoint> get-bucket-lifecycle-configuration
 --bucket testbucket

标准(非版本化)存储桶的生命周期策略示例

90 天后删除对象

用例:此策略非常适合管理仅在有限时间内相关的数据,例如临时文件、日志或中间处理数据。优势:降低存储成本并确保存储桶整洁有序。

{
	"Rules": [
	  {
		"ID": "Delete after 90 day rule",
		"Filter": {},
		"Status": "Enabled",
		  "Expiration": {
			  "Days": 90
	    }
	  }
	]
}

版本控制存储桶的生命周期策略示例

10 天后删除非当前版本

用例:此策略有助于管理非当前版本对象的存储,这些对象会随着时间的推移而累积并占用大量空间。优势:通过仅保留最新版本来优化存储空间利用率。

{
	"Rules": [
	        {
		"ID": "NoncurrentVersionExpiration 10 day rule",
		"Filter": {},
		"Status": "Enabled",
		  "NoncurrentVersionExpiration": {
			  "NoncurrentDays": 10
	   	}
    }
	]
}

保留 5 个非当前版本

用例:当您想保留有限数量的先前版本以用于恢复或审计目的时很有用。好处:保留足够的非当前版本以确保足够的历史记录和恢复点。

{
	"Rules": [
	  {
		"ID": "NewerNoncurrentVersions 5 version rule",
		"Filter": {},
		"Status": "Enabled",
		"NoncurrentVersionExpiration": {
		  	"NewerNoncurrentVersions": 5
	    }
    }
	]
}

当不存在其他版本时移除删除标记

用例:此策略有助于管理所有非当前版本删除后留下的删除标记,这些标记会随着时间的推移而累积。好处:减少不必要的混乱。

{
	"Rules": [
    {
		"ID": "Delete marker cleanup rule",
		"Filter": {},
		"Status": "Enabled",
		"Expiration": {
        "ExpiredObjectDeleteMarker": true
	  	}
    }
	]
}

30 天后删除当前版本,60 天后删除非当前版本,一旦不存在其他版本,则删除当前版本创建的删除标记。

用例:为当前版本和非当前版本提供完整的生命周期,包括删除标记。优势:降低存储成本,确保存储桶整洁有序,同时保留足够的恢复点和历史记录。

{
  "Rules": [
    {
      "ID": "Delete current version",
      "Status": "Enabled",
      "Expiration": {
        "Days": 30
      },
    },
    {
      "ID": "noncurrent version retention",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 60
      }
    },
    {
      "ID": "Markers",
      "Status": "Enabled",
      "Expiration": {
        "ExpiredObjectDeleteMarker": true
      }
    }
  ]
}

删除没有其他版本并且已经存在 5 天的标记,为带有“accounts_ 前缀”的对象保留 4 个非当前版本和至少 30 天的历史记录,为所有其他对象版本保留 2 个版本和至少 10 天的历史记录。

用例:为特定对象以及其他对象提供独特的规则,以管理当前版本和非当前版本(包括删除标记)的完整生命周期。优势:降低存储成本,确保存储桶整洁有序,同时保留足够的恢复点和历史记录,以满足各种客户需求。

{
  "Rules": [
    {
      "ID": "Markers",
      "Status": "Enabled",
      "Expiration": {
        "Days": 5,
        "ExpiredObjectDeleteMarker": true
      },
    },
    {
      "ID": "accounts version retention",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NewerNoncurrentVersions": 4,
        "NoncurrentDays": 30
      },
      "Filter": {
          "Prefix":"account_"
      }
    },
    {
      "ID": "noncurrent version retention",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NewerNoncurrentVersions": 2,
        "NoncurrentDays": 10
      }
    }
  ]
}

结论

  • 定期审查和更新生命周期政策,并使其与 ILM 和数据管理目标保持一致。

  • 在广泛应用策略之前,先在非生产环境或存储桶中测试策略,以确保其按预期工作

  • 使用描述性 ID 作为规则使其更直观,因为逻辑结构可能变得复杂

  • 监控这些存储桶生命周期策略对存储使用情况和性能的影响,以做出必要的调整。