建立 S3 生命週期配置
您可以建立 S3 生命週期配置來控制何時從StorageGRID系統中刪除特定物件。
本節中的簡單範例說明了 S3 生命週期配置如何控制何時從特定 S3 儲存桶中刪除(過期)某些物件。本節中的範例僅用於說明目的。有關建立 S3 生命週期配置的完整詳細信息,請參閱 "Amazon Simple Storage Service 使用者指南:物件生命週期管理"。請注意, StorageGRID僅支援 Expiration 操作;它不支援 Transition 操作。
什麼是生命週期配置
生命週期配置是一組應用於特定 S3 儲存桶中的物件的規則。每條規則指定哪些物件會受到影響以及這些物件何時過期(在特定日期或幾天後)。
StorageGRID在生命週期配置中支援最多 1,000 條生命週期規則。每個規則可以包含以下 XML 元素:
-
過期:從物件被攝取時開始,當達到指定日期或指定天數時刪除物件。
-
NoncurrentVersionExpiration:從物件變成非目前版本開始,當達到指定的天數時刪除該物件。
-
過濾器(前綴、標籤)
-
地位
-
ID
每個物件都遵循 S3 儲存桶生命週期或 ILM 策略的保留設定。配置 S3 儲存桶生命週期後,生命週期到期作業將覆蓋與儲存桶生命週期過濾器相符的物件的 ILM 策略。與儲存桶生命週期過濾器不符的物件使用 ILM 策略的保留設定。如果物件與儲存桶生命週期過濾器匹配,且未明確指定到期操作,則不使用 ILM 策略的保留設置,這表示物件版本將永遠保留。看"S3 儲存桶生命週期和 ILM 策略的範例優先級" 。
因此,即使 ILM 規則中的放置說明仍然適用於該對象,該對像也可能會從網格中移除。或者,即使物件的任何 ILM 放置指令已經失效,該物件仍可能保留在網格上。有關詳細信息,請參閱"ILM 如何在物件的整個生命週期中運作" 。
|
|
儲存桶生命週期配置可與啟用了 S3 物件鎖的儲存桶一起使用,但舊版相容儲存桶不支援儲存桶生命週期配置。 |
StorageGRID支援使用下列儲存桶操作來管理生命週期配置:
-
DeleteBucket生命週期
-
取得BucketLifecycleConfiguration
-
PutBucket生命週期配置
建立生命週期配置
作為建立生命週期配置的第一步,您需要建立一個包含一個或多個規則的 JSON 檔案。例如,此 JSON 檔案包含三條規則,如下所示:
-
規則 1 僅適用於與前綴相符的對象
category1/ 並且有一個key2`的價值 `tag2。這 `Expiration`參數指定與過濾器匹配的物件將於 2020 年 8 月 22 日午夜到期。 -
規則 2 僅適用於與前綴相符的對象
category2/。這 `Expiration`參數指定與篩選器相符的物件將在被攝取後 100 天過期。指定天數的規則與物件被攝取的時間有關。如果目前日期超過攝取日期加上天數,則套用生命週期配置後,某些物件可能會從儲存桶中刪除。 -
規則 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
若要驗證生命週期配置是否已成功套用於儲存桶,請發出 GetBucketLifecycleConfiguration 要求。例如:
aws s3api --endpoint-url <StorageGRID endpoint> get-bucket-lifecycle-configuration --bucket testbucket
成功的回應列出了您剛剛應用的生命週期配置。
驗證儲存桶生命週期到期是否適用於對象
您可以在發出 PutObject、HeadObject 或 GetObject 請求時確定生命週期配置中的過期規則是否適用於特定物件。如果適用規則,則回應包括 `Expiration`指示物件何時過期以及符合哪個過期規則的參數。
|
|
由於 bucket 生命週期覆蓋 ILM, `expiry-date`顯示的是物件被刪除的實際日期。有關詳細信息,請參閱"如何確定對象保留" 。 |
例如,此 PutObject 請求於 2020 年 6 月 22 日發出,並將一個物件放入 `testbucket`桶。
aws s3api --endpoint-url <StorageGRID endpoint> put-object --bucket testbucket --key obj2test2 --body bktjson.json
成功回應表示該物件將在 100 天後(2020 年 10 月 1 日)過期,並且符合生命週期配置的規則 2。
{
*"Expiration": "expiry-date=\"Thu, 01 Oct 2020 09:07:49 GMT\", rule-id=\"rule2\"",
"ETag": "\"9762f8a803bc34f5340579d4446076f7\""
}
例如,此 HeadObject 請求用於取得 testbucket 儲存桶中相同物件的元資料。
aws s3api --endpoint-url <StorageGRID endpoint> head-object --bucket testbucket --key obj2test2
成功回應包括物件的元數據,並表明該物件將在 100 天後過期,並且符合規則 2。
{
"AcceptRanges": "bytes",
*"Expiration": "expiry-date=\"Thu, 01 Oct 2020 09:07:48 GMT\", rule-id=\"rule2\"",
"LastModified": "2020-06-23T09:07:48+00:00",
"ContentLength": 921,
"ETag": "\"9762f8a803bc34f5340579d4446076f7\""
"ContentType": "binary/octet-stream",
"Metadata": {}
}
|
|
對於啟用版本控制的儲存桶, `x-amz-expiration`回應頭僅適用於物件的目前版本。 |