文件

批次過期

新版本於 MinIO:RELEASE.2023-12-02T10-51-33Z

MinIO 批次框架允許您使用 YAML 格式的工作定義檔案(「批次檔案」)建立、管理、監控和執行工作。批次工作直接在 MinIO 部署上執行,以利用伺服器端處理能力,而沒有您執行 MinIO 用戶端 的本機電腦的限制。

expire 批次工作將 自動物件過期 行為應用於單一儲存貯體。此工作根據提供的組態判斷過期資格,而與任何已設定的過期規則無關。

行為

立即過期物件

批次過期會立即發生,作為批次工作的一部分,與 基於被動掃描器的過期規則應用 相比。具體而言,批次過期不會讓步於應用程式 I/O,並可能影響部署上一般讀/寫操作的效能。

在批次執行時判斷過期資格

批次過期會以每個儲存貯體為基礎運作,並執行一次以完成。此工作在工作執行時判斷過期資格,且不會定期重新掃描或重新檢查是否有新物件。

若要擷取任何符合過期資格的新物件,請重新執行批次工作。

過期規則僅檢查最新的物件

批次過期工作僅會針對每個批次過期規則檢查每個物件的最新或「目前」版本。

過期批次工作參考

欄位

描述

expire

必要

過期工作類型的最上層欄位。

apiVersion

必要

設定為 v1

儲存桶 (bucket)

必要

指定執行任務的儲存桶名稱。

前綴 (prefix)

選填

指定執行任務的儲存桶前綴。

規則 (rules)

必要

一個或多個到期規則的陣列,用於套用至指定的 bucketprefix(如果有的話)中的物件。

rules.[n].type

必要

支援以下兩個值之一

  • object - 僅適用於目前版本具有 DeleteMarker 的物件。

  • deleted - 僅適用於目前版本確實具有 DeleteMarker 的物件。

請參閱物件刪除,以取得有關版本化儲存桶中 DeleteMarker 或刪除操作的更完整文件。

rules.[n].name

選填

指定用於篩選物件的匹配字串。

支援 glob 樣式的萬用字元 (*, ?)。

rules.[n].olderThan

選填

指定物件的年齡以篩選物件。此規則僅適用於比指定時間單位舊的物件。

例如,72h3d 會選擇超過三天的物件。

rules.[n].createdBefore

選填

指定用於篩選物件的 ISO-8601 時間戳記。

此規則僅適用於在指定時間戳記之前建立的物件。

rules.[n].tags

選填

指定一組鍵值對陣列,用於描述物件標籤,以篩選物件。value 條目支援 glob 樣式的萬用字元 (*, ?)。

例如,以下範例會將規則篩選為僅包含相符標籤的物件

tags:
  - key: archive
    value: True

此鍵與 rules.[n].type: deleted 不相容。

rules.[n].metadata

選填

指定一組鍵值對陣列,用於描述物件中繼資料,以篩選物件。value 鍵支援 glob 樣式的萬用字元 (*, ?)。

例如,以下範例會將規則篩選為僅包含相符中繼資料的物件

metadata:
  - key: content-type
    value: image/*

此鍵與 rules.[n].type: deleted 不相容。

rules.[n].size

選填

指定篩選物件的物件大小範圍。

  • lessThan - 符合大小小於指定數量(例如 MiBGiB)的物件。

  • greaterThan - 符合大小大於指定數量(例如 MiBGiB)的物件。

rules.[n].purge.retainVersions

選填

指定套用到期時要保留的物件版本數量。

預設值為 0,用於刪除所有物件版本(最快)。

notify.endpoint

選填

用於傳送事件通知的預定義端點。

notify.token

選填

用於存取 notify.endpoint 的選用 JSON Web 權杖 (JWT)。

retry.attempts

選填

放棄之前完成批次任務的嘗試次數。

retry.delay

選填

每次嘗試之間等待的時間長度 (ms)。

expire 任務類型的範例 YAML 描述

使用 mc batch generate 來建立基本的 expire 批次任務以供進一步自訂。

expire:
  apiVersion: v1
  bucket: mybucket # Bucket where this job will expire matching objects from
  prefix: myprefix # (Optional) Prefix under which this job will expire objects matching the rules below.
  rules:
    - type: object  # objects with zero ore more older versions
      name: NAME # match object names that satisfy the wildcard expression.
      olderThan: 70h # match objects older than this value
      createdBefore: "2006-01-02T15:04:05.00Z" # match objects created before "date"
      tags:
        - key: name
          value: pick* # match objects with tag 'name', all values starting with 'pick'
      metadata:
        - key: content-type
          value: image/* # match objects with 'content-type', all values starting with 'image/'
      size:
        lessThan: 10MiB # match objects with size less than this value (e.g. 10MiB)
        greaterThan: 1MiB # match objects with size greater than this value (e.g. 1MiB)
      purge:
          # retainVersions: 0 # (default) delete all versions of the object. This option is the fastest.
          # retainVersions: 5 # keep the latest 5 versions of the object.

    - type: deleted # objects with delete marker as their latest version
      name: NAME # match object names that satisfy the wildcard expression.
      olderThan: 10h # match objects older than this value (e.g. 7d10h31s)
      createdBefore: "2006-01-02T15:04:05.00Z" # match objects created before "date"
      purge:
          # retainVersions: 0 # (default) delete all versions of the object. This option is the fastest.
          # retainVersions: 5 # keep the latest 5 versions of the object including delete markers.

  notify:
    endpoint: https://notify.endpoint # notification endpoint to receive job completion status
    token: Bearer xxxxx # optional authentication token for the notification endpoint

  retry:
    attempts: 10 # number of retries for the job before giving up
    delay: 500ms # least amount of delay between each retry