问题描述
我在使用 AWS SDK 将 FileInputStream 上传到 S3 存储桶时将到期时间设置为 30 分钟,但该文件在 30 分钟后未被删除。我什至在第二天上午 12:00 尝试,认为队列可能在晚上刷新,但仍然可以通过 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);
解决方法
仅供内部使用。这将不设置对象的过期时间,仅用于在收到来自 S3 的响应中的值后设置对象中的值。
此外,不支持手动设置对象过期时间。对象过期仅在生命周期规则中可用。