首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS S3中可以自动删除超过10分钟的对象吗?

在AWS S3中可以自动删除超过10分钟的对象吗?
EN

Stack Overflow用户
提问于 2016-12-01 07:23:37
回答 3查看 9.4K关注 0票数 15

我们希望在创建对象10分钟后从S3中删除对象。目前有可能吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-24 20:33:27

我有一个工作解决方案,它是在AWS的简单队列服务拉姆达的帮助下构建的。这适用于在s3桶中创建的所有对象。

概述

当在s3桶中创建任何对象时,存储桶将向配置有10分钟传递延迟的SQS队列发送带有对象详细信息的事件。SQS队列也是配置为触发Lambda函数。Lambda函数从发送的事件中读取对象详细信息,并从s3桶中删除该对象。所涉及的所有三个组件(s3、SQS和Lambda)都是低成本、松散耦合、无服务器的,并且自动扩展到非常大的工作负载。

所涉步骤

  1. 首先设置你的Lambda函数。在我的解决方案中,我使用了Python 3.7。该函数的代码是: 导入json导入boto3 def lambda_handler(事件,上下文):对于事件中的记录‘record’:v=json.loads(record‘’body‘)中的rec在v“记录”中: bucketName =rec“s3”名称“objectKey =rec”s3“键”#print("bucket是“+ bucketName +和object是”+ objectKey“) sss = boto3.resource("s3") obj = sss.Object(bucketName,objectKey) obj.delete()返回{ 'statusCode':200,'body':json.dumps('Delete .‘)}

此代码和一个示例消息文件已上载到github回购

  1. 创建一个普通的SQS队列。然后将SQS队列配置为有10分钟的传递延迟。此设置可在队列操作->配置队列-> 4下找到。

  1. 配置SQS队列以触发在步骤1中创建的Lambda函数。要执行此操作,请使用Queue ->配置Lambda函数触发器。设置屏幕是不言自明的。如果您没有看到步骤1中的Lambda函数,请正确地重做它,并确保您使用的是同一个区域。
  2. 设置您的S3桶,以便它向您在步骤2中创建的SQS队列激发一个事件。这可以在主桶屏幕上找到,单击“属性”选项卡并选择“事件”。单击加号以添加事件并填写以下表格:

要选择的重要点是选择All Object create events,并选择在第2步中为该屏幕上的最后一个下拉列表创建的队列。

  1. 最后一步-向Lambda函数添加一个执行策略,允许它只从特定的S3桶中删除。您可以通过Lambda函数控制台来完成这一任务。向下滚动控制台的Lambda函数屏幕,并在Execution Role下配置它。

这适用于我复制到一个s3桶中的文件。该解决方案可以支持多个S3桶到一个队列和一个lambda。

票数 8
EN

Stack Overflow用户

发布于 2019-04-24 21:28:21

除了@taterhead提出的涉及SQS队列的详细解决方案外,还可以考虑使用AWS阶跃函数的以下无服务器解决方案

它的优点是:(1)没有15分钟的限制;(2)避免由Lambda函数产生的连续队列轮询成本。

灵感:调度电子邮件,而不使用Step函数轮询数据库

票数 3
EN

Stack Overflow用户

发布于 2019-04-23 13:55:52

如果还有人对此感兴趣,那么S3现在提供了我刚刚研究过的生命周期规则,它们看起来很简单,可以在AWS S3控制台中进行配置。

S3桶的"Management“选项卡将显示一个标记为”添加生命周期规则“的按钮,在该按钮中,用户可以为对象选择特定的前缀,还可以为要修改的桶中的对象的生存期设置过期时间。

为了获得更详细的解释,AWS已经发表了一篇关于这一问题的文章,其中更详细地解释了这里

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40904782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档