【问题标题】:Configure s3 event for alternate PUT operation为备用 PUT 操作配置 s3 事件
【发布时间】:2019-04-22 18:22:14
【问题描述】:

我有一个 Lambda 函数,只要在 s3 存储桶中创建对象,就会触发该函数。

现在,我需要触发 Lambda 以创建备用对象。 在第一次、第三次、第五次等时间创建对象时不应触发 Lambda。但是,Lambda 应该在第二、四、六等时间触发。

为此,我为“PUT”操作创建了一个 s3 事件。 我第一次使用 PUT API。我第二次上传文件时使用 -

s3_res.meta.client.upload_file

我认为它不会触发 lambda,因为这是上传而不是 PUT。但这也触发了 Lambda。

有什么办法吗?

【问题讨论】:

    标签: amazon-web-services events amazon-s3 aws-lambda put


    【解决方案1】:

    meta.client.upload_file 触发您的 PUT 事件 lambda 的原因是因为它实际上使用了PUT

    upload_file (docs) 使用 TransferManager 客户端,它在后台使用 PUT(您可以在代码中看到这一点:https://github.com/boto/s3transfer/blob/develop/s3transfer/upload.py

    查看 AWS-SDK,您会发现 POST'ing 到 S3 几乎仅限于您想要为浏览器/客户端提供预签名 URL 以供他们上传文件的情况。 (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)

    如果您想计算调用PUT 的次数,以便对每个偶数调用采取措施,那么最简单的方法是使用 DynamoDB 之类的东西创建一个“文件名”表' vs 'put-count' ,每个PUT 都会更新并相应地采取行动。

    或者,您可以启用存储桶文件版本控制。然后您可以使用list_object_versions 查看文件更新了多少次。虽然您应该知道 S3 最终是一致的,但如果文件正在快速更新,这可能不准确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2019-12-15
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      相关资源
      最近更新 更多