使用javasdk设置amazons3对象的对象到期日期



我正试图使用javasdk在amazonS3存储中上传一个文件,使用objectMetadata为对象启用明确的到期日期。当我运行该程序时,它会上传到S3,并按预期将到期日期设置为对象元数据,但最终它似乎不会在到期日期后被删除。我不确定我哪里做错了。下面是我用来设置对象元数据的代码片段。

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, file);
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setHttpExpiresDate(new DateTime().plusDays(1).toDate());
putObjectRequest.setMetadata(objectMetadata);
return s3.putObject(putObjectRequest);

我一直在浏览亚马逊的一些文档https://docs.aws.amazon.com/AmazonS3/latest/dev/manage-lifecycle-using-java.html其表示设置BucketLifeCycle配置规则。我不确定如果我应用这个规则,它会应用于这个bucket下的所有文件夹和对象,还是只应用于我通过java程序使用这个规则上传的对象?

请建议,提前谢谢!

根据文档,您不能直接设置特定对象的截止日期。

要解决这个问题,您可以:

  1. 定义bucket的生命周期规则(在数天后删除带有对象的bucket(
  2. 定义bucket的生命周期规则,以便在天数后删除具有特定标记或前缀的对象

要创建规则,请使用文档:

https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html

最新更新