使用 java sdk 设置亚马逊 s3 对象的对象到期日期

use*_*960 5 java spring amazon-s3 amazon-web-services

我正在尝试使用 java sdk 在亚马逊 S3 存储中上传文件,使用 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);
Run Code Online (Sandbox Code Playgroud)

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

请建议,提前致谢!

小智 1

按照文档,您可以\xe2\x80\x99t直接设置特定对象的到期日期。

\n

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

\n
    \n
  1. 定义存储桶的生命周期规则(天数后删除包含对象的存储桶)
  2. \n
  3. 定义存储桶的生命周期规则,以在几天后删除具有特定标签或前缀的对象
  4. \n
\n

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

\n

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

\n