无法设置AWS S3桶上文件对象的过期时间



我在使用AWS SDK上传FileInputStream到S3桶时设置了30分钟的过期时间,但30分钟后文件未被删除。我甚至在第二天凌晨12点尝试过,认为也许队列在晚上刷新,但仍然可以通过url访问文件。我甚至尝试了隐身模式,以确保没有缓存被返回。我不能更改桶的配置,也没有为桶的过期定义生命周期。我可以设置的最小过期时间是多少,为什么30分钟不工作。

ObjectMetadata data = new ObjectMetadata();
data.setCacheControl("no-cache");
data.setExpirationTime(Date.from(Instant.now().plus(30, ChronoUnit.MINUTES)));
PutObjectRequest r = new PutObjectRequest(bucket, file, fileInputStream,
data);
awsSdkClient.putObject(r);

参见https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/ObjectMetadata.html#setExpirationTime-java.util.Date-:

仅供内部使用。这将而不是设置对象的过期时间,并且仅用于在从S3接收到响应中的值后设置对象中的值。

为了补充这一点,不支持手动设置对象过期时间。对象过期只在生命周期规则中有效。

相关内容