使用 Golang SDK 不会过期的 S3 对象

tie*_*er1 4 amazon-s3 go amazon-web-services aws-sdk aws-sdk-go

使用 AWS Golang SDK,我尝试为我上传的某些对象设置到期日期。我很确定标题设置正确,但是,当登录到 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,
})
Run Code Online (Sandbox Code Playgroud)

这是我登录网站时看到的 在此处输入图片说明

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

Dan*_*ilo 7

好吧,Expires只是错误的字段:

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

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

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

每个规则具有以下属性:

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

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

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

Id - 可选,为规则命名。

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

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