S3 java SDK - 设置到期对象

时间:2018-01-09 18:29:38

标签: amazon-s3 aws-sdk

我正在尝试将文件上传到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

1 个答案:

答案 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下的用户指南中所述。