amazon-web-services - 为备用 PUT 操作配置 s3 事件
问题描述
我有一个 Lambda 函数,只要在 s3 存储桶中创建对象,就会触发该函数。
现在,我需要触发 Lambda 以创建备用对象。在第一次、第三次、第五次等时间创建对象时不应触发 Lambda。但是,Lambda 应该在第二、第四、第六等时间触发。
为此,我为“PUT”操作创建了一个 s3 事件。我第一次使用 PUT API。我第二次上传文件时使用 -
s3_res.meta.client.upload_file
我认为它不会触发 lambda,因为这是上传而不是 PUT。但这也触发了 Lambda。
有什么办法吗?
解决方案
meta.client.upload_file
触发事件 lambda的原因PUT
是因为它实际上是使用PUT
.
upload_file
( docs ) 使用 TransferManager 客户端,它使用PUT
底层(您可以在代码中看到这一点:https ://github.com/boto/s3transfer/blob/develop/s3transfer/upload.py )
查看 AWS-SDK,您会发现POST
S3 非常受限于您想要为浏览器/客户端提供预签名 URL 以供他们上传文件的情况。(https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
如果您想计算PUT
被调用的次数,以便对每个偶数调用采取行动,那么最简单的方法是使用 DynamoDB 之类的东西来创建一个“文件名”与“放置计数”的表' 你会更新它PUT
并相应地采取行动。
或者,您可以启用存储桶文件版本控制。然后您可以使用list_object_versions
来查看文件已更新了多少次。尽管您应该知道 S3 最终是一致的,但如果文件正在快速更新,这可能不准确。
推荐阅读
- ios - SwiftUI 中按钮操作内的 ForEach 循环?
- angularjs - 两列( 3 和 9 )不对齐
- c# - 在 VS Code 上安装实体框架
- reactjs - Material-UI 自动完成功能似乎对我不起作用
- node.js - AWS 凭证错误:无法从任何提供商加载凭证。弹性搜索服务 node.js
- google-apps-script - Google 表格中的 Google 脚本编辑器 - 接受或拒绝电子邮件
- linux - gphoto2 pipe:: 处理输入时发现无效数据
- javascript - 如何从 Mongodb 获取 Document 对象
- javascript - 页面加载时显示文本区域的所有行
- machine-learning - 确定参数 E、B 和学习率值