30分钟不工作后从S3存储桶中删除对象

2024-10-16 17:24:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我看过这个帖子:amazon web services - Is it possible to automatically delete objects older than 10 minutes in AWS S3? - Stack Overflow

它说在10分钟后删除,这对我使用AmazonSQS很好,但我们的限制是最多15分钟。现在我正在尝试使用Step函数

我创建了一个状态机来触发一个Lambda函数,等待时间为1800秒,在任务状态下,我给出了Lambda ARN,请参见下面的Lambda:

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.')
}

我已经启用了CloudTrail,并添加了S3 bucket in bucket选项和其他bucket in storage选项。然后,我为对象级监控创建了CloudWatch事件,以触发我在第一步中创建的step函数

现在的问题是Lambda,它无法从步骤函数中获取关于bucket名称和对象的事件。有人能帮忙吗


Tags: lambda函数inimporteventjsonfors3