Minio中如何设置BucketLifeCycleRule?

Rod*_*aim 1 java amazon-s3 bucket kotlin minio

创建Minio存储桶后,我设置了存储桶的生命周期规则。LifeCycleRule 占用仅设置为 1 天的过期变量。当通过 minio 客户端 (mc) 检查存储桶的状态时,mc ilm ls mycloud/bucketName我注意到生命周期规则已成功应用于指定的存储桶。然而,当 1 天后再次检查 Minio 时,桶仍然在那里。为了正确删除 Minio Bucket,我还需要在 LifeCycleRule 中添加其他内容吗?

请注意,我一直使用Minio SDKs Java Client API作为参考。


fun createBucket(bucketName: String){
   client.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build())
   setBucketLifeCycle(bucketName)
}

private fun setBucketLifeCycle(bucketName: String){

   // Setting the expiration for one day.
   val expiration = Expiration(null as ZonedDateTime?, 1, null)

   var lifeCycleRuleList = mutableListOf<LifecycleRule>()

   val lifecycleRuleExpiry = LifecycleRule(
     Status.ENABLED,
     null,
     expiration,
     RuleFilter("expiry/logs"),
     "rule 1",
     null,
     null,
     null)

   lifecycleRuleList.add(lifecycleRuleExpiry)
   var lifecycleConfig = LifecycleConfiguration(lifecycleRuleList)
 
   // Applies the lifecycleConfig on to target bucket.
   client.setBucketLifecycle(SetBucketLifecycleArgs.buider()
     .bucket(bucketName).config(lifecycleConfig).build())
}

Run Code Online (Sandbox Code Playgroud)

问题

  • 我的 LifeCycleRule 是否遗漏了更多内容?
  • 难道是因为桶里有对象,所以不会自动删除?
    • 我确实在 minio 客户端上注意到,当存储桶上有项目时,mc rb mycloud/bucketName将无法删除存储桶,但强制使用mc rb -force mycloud/bucketName将成功删除它。有没有办法对生命周期参数进行指定“强制”?

小智 6

生命周期规则适用于存储桶内的对象,而不适用于存储桶本身。

S3 生命周期配置是一组规则,用于定义 Amazon S3 应用于一组对象的操作。

(参考: https: //docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html

因此,即使该存储桶中的所有对象都通过 ILM 策略过期,该存储桶也不会被删除。