识别和删除未访问的S3对象?

时间:2018-10-24 08:05:53

标签: amazon-web-services amazon-s3

我最近加入了一家将S3存储桶用于AWS内各种不同项目的公司。我想识别并可能删除未被访问(读取和写入)的S3对象,以降低我的AWS账户中S3的成本。

我读了this,这在一定程度上帮助了我。

有没有一种方法可以找出正在访问哪些对象,哪些不是?

2 个答案:

答案 0 :(得分:1)

其他AWS服务没有不需要 Amazon S3中的对象,但是您可能已将服务配置为使用文件。

例如,您可能正在通过Amazon CloudFront提供内容,为AWS CloudFormation提供模板或对存储在Amazon S3中的视频进行转码。

如果您没有创建文件,并且没有故意使用文件,则可以删除它们吗?但是 you 是唯一知道它们是否必要的人。

答案 1 :(得分:0)

目前尚无本机执行此操作的方法,因此所有选项都是解决方法,具体取决于您的用例。

您有几种选择:

  1. 标记每个S3对象(例如,2018-10-24)。首先为您的S3存储桶打开Object Level Logging。为CloudTrail设置CloudWatch Events。然后,可以通过在CloudWatch Event上运行的Lambda函数来更新标签,该函数会在Get事件中触发。然后创建一个在Scheduled CloudWatch Event上运行的函数,以删除今天之前带有日期标签的所有对象。
  2. 查询CloudTrail日志,编写自定义函数以查询Object Level CloudTrail Logs中的最近访问时间。这可以通过Athena或直接查询S3来完成。
  3. 使用DynamoDB之类的方法创建单独的索引,您可以在应用程序中根据读取活动对其进行更新。
  4. S3 Bucket /键前缀上使用
  5. 生命周期策略来在x天后归档或删除对象。这是基于上载时间而不是上次访问时间,因此您可以将对象copy本身重置时间戳并重新启动时钟。