2

我将对象存储到 S3,我希望上个月从未访问过的对象转到冰川。

经过一些研究,我认为我无法做到这一点,但我希望是错的。

为 s3 存储桶创建生命周期时,规则基于对象创建日期(不是最后访问日期)

根据http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html设置对象的存储类将无济于事

“您无法在上传对象时将其与 Glacier 存储类关联。您可以使用生命周期管理将现有 Amazon S3 对象转换为 Glacier 存储类。有关更多信息,请参阅对象生命周期管理。”

有谁知道如何做到这一点?

谢谢

4

4 回答 4

4

您无法在 S3 对象生命周期配置中添加适用于对象的条件策略,在您的情况下,该策略基于对象的上次访问时间。

但是,您可以根据对象的年龄或特定日期将对象转换为 Glacier。

我想您可以在您的应用程序中处理它,但如果您使用 AWS 开发工具包,返回的 s3 对象没有最后访问时间。

详情在这里

于 2015-12-10T05:23:12.250 回答
0

要将 Glacier 存储类关联到对象,您需要对对象应用生命周期转换规则

例如,如果您应用生命周期规则将“folder1”下的所有内容移动到 Glacier,则此规则将应用于现有数据以及“folder1”上新上传的数据。当数据移动到 Glacier 时,您可以看到存储类变为Glacier

当您删除生命周期规则时,不会有新数据移入 Glacier,但旧数据仍会保留在 Glacier 中,直到您恢复它们。

有关更多详细信息:Amazon S3 - 对象生命周期管理

(披露:桶资源管理器

于 2013-10-15T05:25:02.303 回答
0

AFAIK, you can 'only' toy around with the lifecycle rules to set a fixed archiving date after object creation...

于 2016-05-06T09:21:20.173 回答
0

S3 生命周期规则未提供开箱即用的功能。但是,有一个很好的 AWS 博客解释了实现相同目标的可能架构。

这是 URL -> expiring-amazon-s3-objects-based-on-last-accessed-date-to-decrease-costs
除了 S3 之外,还使用了其他几种服务。这些是事件桥、雅典娜、Lambda。这是来自 AWS 博客的描述:

  1. S3 服务器访问日志捕获 S3 对象请求。这些生成并存储在目标 S3 存储桶中。
  1. 每天为源存储桶生成 S3 清单报告。它被写入 S3 清单目标存储桶。
  1. 配置了一个 Amazon EventBridge 规则,它将每天启动一次 AWS Lambda 函数,或者根据需要启动一次。
  1. Lambda 函数启动 S3 批量操作作业以标记源存储桶中的对象。这些必须使用以下逻辑过期:
  • 从 S3 生命周期配置中捕获天数 (x) 配置。
  • 运行 Amazon Athena 查询,该查询将从 S3 清单报告和服务器访问日志中获取对象列表。创建一个增量列表,其中包含早于“x”天创建但在此期间未访问的对象。
  • 将包含这些对象列表的清单文件写入 S3 存储桶。
  • 创建一个 S3 Batch 操作作业,该作业将使用“delete=True”标签标记清单文件中的所有对象。
  1. 源 S3 存储桶上的生命周期规则将使在“x”天之前创建的所有对象过期。它们将具有通过“delete=True”的 S3 批处理操作给出的标签。
于 2022-02-08T19:19:12.023 回答