文档

对象自动过期

本页上的每个步骤都会创建一个新的对象生命周期管理规则,该规则会使 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 命令使非当前对象版本和对象删除标记过期。

  • 若要使非当前对象版本在特定时间段后过期(以天为单位),请包含 --noncurrent-expire-days 参数。

  • 若要使没有剩余版本的对象的删除标记过期,请包含 --expire-delete-marker 参数。

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 中移除。