Onk*_*ngh 8 amazon-s3 amazon-web-services
我们希望在创建对象后10分钟从S3中删除对象.目前有可能吗?
我有一个工作解决方案,它是在 AWS 的Simple Queue Service和AWS Lambda的帮助下构建的无服务器。这适用于在 s3 存储桶中创建的所有对象。
当在您的 s3 存储桶中创建任何对象时,存储桶会将包含对象详细信息的事件发送到配置了 10 分钟交付延迟的 SQS 队列。SQS 队列还配置为触发 Lambda 函数。Lambda 函数从发送的事件中读取对象详细信息,并从 s3 存储桶中删除对象。所涉及的所有三个组件(s3、SQS 和 Lambda)都是低成本、松散耦合、无服务器和自动扩展到非常大的工作负载。
首先设置您的 Lambda 函数。在我的解决方案中,我使用了 Python 3.7。该函数的代码是:
import json
import boto3
def lambda_handler(event, context):
for record in event['Records']:
v = json.loads(record['body'])
for rec in v["Records"]:
bucketName = rec["s3"]["bucket"]["name"]
objectKey = rec["s3"]["object"]["key"]
#print("bucket is " + bucketName + " and object is " + objectKey )
sss = boto3.resource("s3")
obj = sss.Object(bucketName, objectKey)
obj.delete()
return {
'statusCode': 200,
'body': json.dumps('Delete Completed.')
}
Run Code Online (Sandbox Code Playgroud)此代码和示例消息文件已上传到github 存储库。
配置 SQS 队列以触发您在步骤 1 中创建的 Lambda 函数。为此,请使用队列操作 -> 为 Lambda 函数配置触发器。设置屏幕是不言自明的。如果您没有看到步骤 1 中的 Lambda 函数,请正确重做并确保您使用相同的区域。
设置您的 S3 存储桶,以便它向您在步骤 2 中创建的 SQS 队列触发事件。这可以在存储桶主屏幕上找到,单击属性选项卡并选择事件。单击加号添加事件并填写以下表格:
要选择的要点是选择All Object create events
并选择您在步骤 2 中为该屏幕上的最后一个下拉列表创建的队列。
Execution Role
。这适用于我复制到单个 s3 存储桶中的文件。该解决方案可以支持多个 S3 存储桶到 1 个队列和 1 个 lambda。
归档时间: |
|
查看次数: |
1517 次 |
最近记录: |