gpt4 book ai didi

amazon-web-services - 是否可以自动删除 AWS S3 中超过 10 分钟的对象?

转载 作者:行者123 更新时间:2023-12-04 08:56:13 26 4
gpt4 key购买 nike

我们想在创建对象 10 分钟后从 S3 中删除它们。目前可以吗?

最佳答案

我有一个工作解决方案,它是在 AWS 的 Simple Queue Service 的帮助下构建的无服务器和 AWS Lambda .这适用于在 s3 存储桶中创建的所有对象。

概述

在您的 s3 存储桶中创建任何对象时,该存储桶会将包含对象详细信息的事件发送到配置了 10 分钟交付延迟的 SQS 队列。 SQS 队列也是 configured to trigger a Lambda function . 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.')
    }

  • 此代码和示例消息文件已上传到 github repo .
  • 创建一个普通的 SQS 队列。然后将 SQS 队列配置为具有 10 分钟的传递延迟。可以在队列操作 -> 配置队列 -> 4 设置下找到此设置

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

  • enter image description here

    选择的重点是选择 All Object create events并选择您在步骤 2 中创建的队列以用于此屏幕上的最后一个下拉列表。
  • 最后一步 - 将执行策略添加到您的 Lambda 函数,使其只能从特定的 S3 存储桶中删除。您可以通过 Lambda 函数控制台执行此操作。向下滚动控制台的 Lambda 函数屏幕并在 Execution Role 下配置它.

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

    关于amazon-web-services - 是否可以自动删除 AWS S3 中超过 10 分钟的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40904782/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com