【问题标题】:S3 objects not expiring using the Golang SDK使用 Golang SDK 不会过期的 S3 对象
【发布时间】:2017-03-09 06:28:23
【问题描述】:

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

下面是我如何上传对象的 sn-p

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,
})

这是我登录网站时看到的内容

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

【问题讨论】:

    标签: amazon-web-services go amazon-s3 aws-sdk aws-sdk-go


    【解决方案1】:

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

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

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

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

    每条规则都有以下属性:

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

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

    过期 - 指定受规则约束的对象的过期期限,以对象创建日期起的天数表示。

    Id – 可选,为规则命名。

    然后每天都会评估此规则,并删除所有过期的对象。

    请参阅https://aws.amazon.com/blogs/aws/amazon-s3-object-expiration/ 以获得更深入的解释。

    【讨论】:

    • 非常感谢。讨厌成为不阅读/理解文档的人
    【解决方案2】:

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

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

    然后,转到 S3 存储桶管理控制台并像这样设置生命周期规则针对特定目标g。

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

    【讨论】:

      猜你喜欢
      • 2015-12-05
      • 2023-03-18
      • 1970-01-01
      • 2018-09-24
      • 2016-07-24
      • 2019-08-18
      • 2022-01-26
      • 2019-05-23
      • 1970-01-01
      相关资源
      最近更新 更多