代码之家  ›  专栏  ›  技术社区  ›  chip

过期在boto3 aws s3中意味着什么?

  •  0
  • chip  · 技术社区  · 3 年前

    我试图在Amazon S3中创建文件后,为其设置过期日期/时间。在文件被“放入”Amazon S3之后,我放置的过期时间仅为5到10秒。

    但与我的预期相反,几分钟后,当我尝试列出我使用的前缀下的对象时,我认为应该删除的文件仍然存在。

    检查后,expire表示文件将不再可缓存。这是什么意思?何时将过期文件从bucket中完全删除?

    我使用客户端的get\u对象来显示过期值,这里描述了过期,一些aws s3文档也提到了这个术语 不再可缓存 我完全不明白: link

    这是我上传数据的方式:

    s3_client.put_object(Body=data, Bucket=bucket, Key=key)
    s3_client.copy_object(CopySource=f"{bucket}/{key}",
                          Bucket=bucket,
                          Key=key,
                          Metadata={'expires': expiration},
                          MetadataDirective='REPLACE')
    

    当我尝试获取文件时,它确实显示了过去的日期和时间,因此我确实认为我在对象上放置了正确的过期值。我只是想知道为什么当我尝试列出特定文件夹/前缀中的对象时,它仍然显示出来

    0 回复  |  直到 3 年前
        1
  •  2
  •   Marcin    3 年前

    过期意味着文件将不再可缓存。这是什么意思?

    这是唯一的最终用户助手参数。它本身不做任何事情。这意味着谁/什么人将要使用复制的对象,应该在对象过期之前这样做。在该日期之后,文件可能会过期,应制作新的副本。就AWS而言 CouldFront caching 指示CF何时应丢弃过期的s3文件。

    要正确自动删除(又名过期)对象,必须设置 s3 lifecycle rules