首页 > 解决方案 > S3 对象:“过期”和“过期日期”之间的区别

问题描述

我正在尝试遵循 AWS 文档aws s3 cp,该文档将--expires标志记录为:

--expires (string) 对象不再可缓存的日期和时间。

...

将具有到期日期的本地文件复制到 S3

以下 cp 命令将单个文件复制到在指定 ISO 8601 时间戳过期的指定存储桶和密钥:

aws s3 cp test.txt s3://mybucket/test2.txt --expires 2014-10-01T20:30:00Z

因此,当我像上面的示例一样运行命令时,我会在 S3 中得到一个文件,该文件在右侧有一个“概述”窗格,如下所示:

概览窗格

概述窗格声称没有“到期日期”。好的。但是,如果我单击该文件,在“属性”->“元数据”下,我确实看到了:

S3 对象元数据

那么哪一个是对的呢?“过期”和“过期日期”时间戳是否意味着不同的东西?还是它们是同一个东西,而显示器只是有问题?

我在 StackOverflow 上搜索了几个类似的问题(这里这里这里),但没有找到答案。

标签: amazon-s3aws-cli

解决方案


所以,这是非常糟糕的记录,但我想我在这里找到了答案:

使用 Amazon S3 控制台将 Cache-Control 或 Expires 标头字段添加到 Amazon S3 对象...

选择Add Metadata,然后在Key菜单中,选择Cache-ControlExpires。...

对于Expires字段,键入 HTML 格式的日期和时间。

换句话说,通过设置的Expires字段aws s3 cp ... --expires=...旨在成为影响下游缓存的 HTTP 标头(显然 CloudFront 将遵循此expires值)。在此时间之后不会删除S3 对象。

令人困惑的是,这个Expires值与 S3 对象的Expiration完全不同,我认为它只能S3 存储桶上的 Lifecycle Policy设置,而不是在上传时按文件设置(即不使用)。aws s3 cp ...


推荐阅读