4

使用 AWS Golang 开发工具包,我正在尝试为我上传的一些对象设置过期日期。我很确定标头设置正确,但是,当登录 S3 并查看新对象的属性时,它似乎没有到期日期。

下面是我如何上传对象的片段

exp := time.Now()
exp = exp.Add(time.Hour * 24)

svc := s3.New(session.New(config))
_, err = svc.PutObject(&s3.PutObjectInput{
    Bucket:        aws.String("MyBucketName"),
    Key:           aws.String("201700689.zip"),
    Body:          fileBytes,
    ContentLength: aws.Int64(size),
    ContentType:   aws.String(fileType),
    Expires:       &exp,
})

这是我登录网站时看到的 在此处输入图像描述

知道这里发生了什么吗?谢谢

4

2 回答 2

7

好吧,Expires只是错误的领域:

// 对象不再可缓存的日期和时间。

您想要的是Object Expiration可以将其设置为存储桶规则而不是每个对象。

基本上,您添加一个生命周期规则(在存储桶属性上),指定:

每个规则具有以下属性:

前缀 – 键名的初始部分(例如 logs/)或整个键名。存储桶中具有匹配前缀的任何对象都将受此过期规则的约束。空前缀将匹配存储桶中的所有对象。

状态 - 启用或禁用。您可以选择不时启用规则以对您的存储桶执行删除或垃圾收集,并在其他时间禁用规则。

过期 – 指定受规则约束的对象的过期期限,作为对象创建日期的天数。

Id – 可选,为规则命名。

然后将每天评估此规则,并删除任何过期的对象。

有关更深入的解释,请参阅https://aws.amazon.com/blogs/aws/amazon-s3-object-expiration/ 。

于 2016-10-26T23:27:30.400 回答
2

使用 Golang SDK 使 S3 中的对象过期的一种方法是使用类似的标记您的上传

Tagging: aws.String("temp=true")

然后,转到 S3 存储桶管理控制台并为该特定标签设置生命周期规则目标,如下所示。

在此处输入图像描述

您可以在 LifeCycle 中创建规则期间配置对象过期的时间范围。

于 2020-03-06T12:09:20.450 回答