0

我在使用 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);
4

1 回答 1

1

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

仅限内部使用。这不会设置对象的过期时间,仅用于在收到 S3 的响应中的值后设置对象中的值。

除此之外,不支持手动设置对象过期时间。对象过期仅在生命周期规则中可用。

于 2021-03-03T20:10:19.170 回答