我正在尝试将文件上传到S3,并使用Java SDK为其设置过期日期。
这是我得到的代码:
Instant expiration = Instant.now().plus(3, ChronoUnit.DAYS);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setExpirationTime(Date.from(expiration));
metadata.setHeader("Expires", Date.from(expiration));
s3Client.putObject(bucketName, keyName, new FileInputStream(file), metadata);
对象在S3控制台中没有过期数据。
我该怎么办?
此致 Ido
答案 0 :(得分:2)
这是两个无关的事情。控制台中显示的到期时间为x-amz-expiration
,由系统填充,由生命周期策略填充。它是只读的。
<强>
x-amz-expiration
强>如果为对象配置了Expiration操作作为存储桶生命周期配置的一部分,则Amazon S3将返回此标头。标题值包括&#34;到期日期&#34;组件和URL编码的&#34; rule-id&#34;零件。
https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html
Expires
是一个标题,当在对象上设置时,在下载对象时在响应中返回。
Expires
无法再缓存对象的日期和时间。有关更多信息,请转到http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21。
https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html
不可能告诉S3何时使特定对象过期(删除) - 这只是作为存储桶生命周期策略的一部分完成的,如Object Lifecycle Management下的用户指南中所述。