Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

建立 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. 規則 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

若要驗證生命週期配置是否已成功套用於儲存桶,請發出 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`回應頭僅適用於物件的目前版本。