文档

对象自动过期

此页面上的每个过程都会创建一个新的对象生命周期管理规则,该规则会使 MinIO 桶中的对象过期。此过程支持诸如在特定时间段或日历日期后删除“旧”对象之类的用例。

要求

安装和配置 mc

此过程使用 mc 对 MinIO 集群执行操作。在具有对源集群和目标集群的网络访问权限的机器上安装 mc。有关下载和安装 mc 的说明,请参阅 mc 安装快速入门

使用 mc alias set 命令为源 MinIO 集群和目标 S3 兼容服务创建别名。别名创建需要为源集群和目标集群上的用户指定访问密钥。指定的用户必须具有 权限 来配置和应用过期操作。

必需权限

MinIO 需要对您为其创建生命周期管理规则的桶或桶进行以下权限限定。

MinIO 还需要对您为对象转换生命周期管理规则创建远程层级的集群进行以下管理权限

例如,以下策略提供了对集群中任何桶配置对象转换生命周期管理规则的权限:.

{
   "Version": "2012-10-17",
   "Statement": [
      {
            "Action": [
               "admin:SetTier",
               "admin:ListTier"
            ],
            "Effect": "Allow",
            "Sid": "EnableRemoteTierManagement"
      },
      {
            "Action": [
               "s3:PutLifecycleConfiguration",
               "s3:GetLifecycleConfiguration"
            ],
            "Resource": [
                        "arn:aws:s3:::*"
            ],
            "Effect": "Allow",
            "Sid": "EnableLifecycleManagementRules"
      }
   ]
}

在指定天数后过期对象

使用 mc ilm rule add 并结合 --expire-days 在对象创建后的指定天数后使存储桶内容过期。

mc ilm rule add ALIAS/PATH --expire-days "DAYS"
  • ALIAS 替换为 S3 兼容主机的 alias

  • PATH 替换为 S3 兼容主机上存储桶的路径。

  • DAYS 替换为使对象过期的天数。例如,指定 30 表示在创建后 30 天使对象过期。

使版本化对象过期

使用 mc ilm rule add 来使非当前对象版本和对象删除标记过期。

mc ilm rule add ALIAS/PATH \
   --noncurrent-expire-days NONCURRENT_DAYS \
   --expire-delete-marker
  • 若要使对象的全部版本过期,请包含 --expire-all-object-versions。此过期规则仅适用于没有 DeleteMarker 作为最新或当前版本的对象。

    mc ilm rule add ALIAS/PATH \
       --expire-all-object-versions
    
  • ALIAS 替换为 S3 兼容主机的 alias

  • PATH 替换为 S3 兼容主机上存储桶的路径。

  • NONCURRENT_DAYS 替换为使非当前对象版本过期的天数。例如,指定 30d 表示在版本非当前状态持续至少 30 天后使该版本过期。

使已删除对象的全部版本过期

MinIO Server RELEASE.2024-05-01T01-11-10Z 开始,MinIO 支持删除具有删除标记作为其最新版本的对象的全部版本。MinIO 使用 JSON 支持此类删除,而不是通过命令行。

要将此功能添加到规则中,首先使用 mc ilm rule export 导出要修改的规则。使用类似于以下内容的额外 JSON 修改导出的规则。

<DelMarkerObjectExpiration>
    <Days> 10 </Days>
</DelMarkerObjectExpiration>

此示例 JSON 在 10 天后使已删除对象的全部版本过期。将 <Days> 元素中的值修改为您希望在删除对象后等待的天数,然后再使该对象过期并将其从 MinIO 中删除。